Package: singularity
Version: 0.30-2
Severity: normal

In this game, you can rent a warehouse and install computers
there.  The game then asks how many computers you want to buy.
I typed in clearly valid values such as 1 or 2 but the game
kept complaining: "That doesn't seem to be a valid number."
Every now and then though, the value got through.
(I still don't know why.)

I then installed python2.5-dbg and debugged this with gdb.
It seems to be a problem with Unicode conversions:

;; These double-semicolon comments were not originally part of gdb output.
(gdb) backtrace
#0  _PyObject_CallFunction_SizeT (callable=0x7247a0, 
    format=0x4ec5dd "ss#nns") at ../Objects/abstract.c:1921
#1  0x0000000000426fac in PyUnicodeDecodeError_Create (
    encoding=<value optimized out>, object=<value optimized out>, 
    length=<value optimized out>, start=<value optimized out>, 
    end=<value optimized out>, reason=<value optimized out>)
    at ../Objects/exceptions.c:1730
#2  0x0000000000474f79 in unicode_decode_call_errorhandler (
    errors=<value optimized out>, errorHandler=0x7fff4e923668, 
    encoding=0x4f20e8 "ascii", 
    reason=0x4f20ce "ordinal not in range(128)", input=0x2c6ce94 " ", 
    insize=2, startinpos=0x7fff4e923680, endinpos=0x7fff4e923678, 
    exceptionObject=0x7fff4e923660, inptr=0x7fff4e923650, 
    output=0x7fff4e923690, outpos=0x7fff4e923670, outptr=0x7fff4e923688)
    at ../Objects/unicodeobject.c:828
#3  0x000000000047aa4c in PyUnicodeUCS4_DecodeASCII (s=0x2c6ce94 " ", 
    size=2, errors=0x4ed7a5 "strict") at ../Objects/unicodeobject.c:2862
#4  0x000000000047ad6e in PyUnicodeUCS4_Decode (s=0x2c6ce94 " ", 
    size=2, encoding=<value optimized out>, errors=0x4ed7a5 "strict")
    at ../Objects/unicodeobject.c:604
#5  0x000000000047aed0 in PyUnicodeUCS4_FromEncodedObject (
    obj=0x2c6ce70, encoding=0x0, errors=0x4ed7a5 "strict")
    at ../Objects/unicodeobject.c:576
#6  0x000000000047b57a in unicode_replace (self=0x1c2a7b0, 
    args=<value optimized out>) at ../Objects/unicodeobject.c:6555
#7  0x000000000048f1fd in call_function (f=0x43fb350, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3612
#8  PyEval_EvalFrameEx (f=0x43fb350, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/lib/python2.5/locale.py (253): atof
#9  0x00000000004904ac in PyEval_EvalCodeEx (co=0x1b73558, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x317b108, argcount=2, kws=0x317b118, kwcount=0, 
    defs=0x1b76e68, defcount=1, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/lib/python2.5/locale.py (253): atof
#10 0x000000000048ef48 in fast_function (f=0x317af80, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3708
#11 call_function (f=0x317af80, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#12 PyEval_EvalFrameEx (f=0x317af80, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/lib/python2.5/locale.py (261): atoi
#13 0x000000000048fcd3 in fast_function (f=0x2ed2b40, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#14 call_function (f=0x2ed2b40, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#15 PyEval_EvalFrameEx (f=0x2ed2b40, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/base.py (239): set_current
#16 0x000000000048fcd3 in fast_function (f=0x3170280, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#17 call_function (f=0x3170280, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#18 PyEval_EvalFrameEx (f=0x3170280, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/base.py (274): build_item
#19 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1c33828, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x7fd9b3411f00, argcount=1, kws=0x1d732d0, kwcount=1, 
    defs=0x0, defcount=0, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/screens/base.py (274): build_item
#20 0x00000000004d99c9 in function_call (func=0x1cd4e60, arg=0x45396d0, 
    kw=0x2bd9800) at ../Objects/funcobject.c:517
#21 0x00000000004186a3 in PyObject_Call (func=0x7247a0, arg=0x4ec5dd, 
    kw=0x4f20e8) at ../Objects/abstract.c:1861
#22 0x000000000048db4f in ext_do_call (f=0x2eb8d40, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3892
#23 PyEval_EvalFrameEx (f=0x2eb8d40, throwflag=<value optimized out>)
    at ../Python/ceval.c:2344
    ;; /usr/share/games/singularity/code/graphics/button.py (152): activated
#24 0x000000000048fcd3 in fast_function (f=0x315afc0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#25 call_function (f=0x315afc0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#26 PyEval_EvalFrameEx (f=0x315afc0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (122): 
activate_with_sound
#27 0x000000000048fcd3 in fast_function (f=0x316f7f0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#28 call_function (f=0x316f7f0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#29 PyEval_EvalFrameEx (f=0x316f7f0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (112): handle_event
#30 0x000000000048fcd3 in fast_function (f=0x2ebb130, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#31 call_function (f=0x2ebb130, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#32 PyEval_EvalFrameEx (f=0x2ebb130, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (319): call_handlers
#33 0x000000000048fcd3 in fast_function (f=0x2046fc0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#34 call_function (f=0x2046fc0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#35 PyEval_EvalFrameEx (f=0x2046fc0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (306): handle
#36 0x000000000048fcd3 in fast_function (f=0x1c75510, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#37 call_function (f=0x1c75510, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#38 PyEval_EvalFrameEx (f=0x1c75510, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (190): show
#39 0x000000000048fcd3 in fast_function (f=0x2ec4a70, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#40 call_function (f=0x2ec4a70, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#41 PyEval_EvalFrameEx (f=0x2ec4a70, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/base.py (283): show
#42 0x000000000048fcd3 in fast_function (f=0x2ebb8d0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#43 call_function (f=0x2ebb8d0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#44 PyEval_EvalFrameEx (f=0x2ebb8d0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (98): call_dialog
#45 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1c43dc8, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x3118c70, argcount=2, kws=0x3118c80, kwcount=0, 
    defs=0x1cccb28, defcount=1, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/graphics/dialog.py (98): call_dialog
#46 0x000000000048ef48 in fast_function (f=0x3118ae0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3708
#47 call_function (f=0x3118ae0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#48 PyEval_EvalFrameEx (f=0x3118ae0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/location.py (168): open_base
#49 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1ce1828, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x4539aa8, argcount=1, kws=0x2ebc900, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/screens/location.py (168): open_base
#50 0x00000000004d99c9 in function_call (func=0x1ce7230, arg=0x4539a90, 
    kw=0x2bacc00) at ../Objects/funcobject.c:517
#51 0x00000000004186a3 in PyObject_Call (func=0x7247a0, arg=0x4ec5dd, 
    kw=0x4f20e8) at ../Objects/abstract.c:1861
#52 0x000000000048db4f in ext_do_call (f=0x316f240, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3892
#53 PyEval_EvalFrameEx (f=0x316f240, throwflag=<value optimized out>)
    at ../Python/ceval.c:2344
    ;; /usr/share/games/singularity/code/graphics/button.py (152): activated
#54 0x000000000048fcd3 in fast_function (f=0x3175350, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#55 call_function (f=0x3175350, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#56 PyEval_EvalFrameEx (f=0x3175350, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (122): 
activate_with_sound
#57 0x000000000048fcd3 in fast_function (f=0x315f470, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#58 call_function (f=0x315f470, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#59 PyEval_EvalFrameEx (f=0x315f470, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (110): handle_event
#60 0x000000000048fcd3 in fast_function (f=0x43fab20, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#61 call_function (f=0x43fab20, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#62 PyEval_EvalFrameEx (f=0x43fab20, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (319): call_handlers
#63 0x000000000048fcd3 in fast_function (f=0x2edc980, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#64 call_function (f=0x2edc980, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#65 PyEval_EvalFrameEx (f=0x2edc980, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (306): handle
#66 0x000000000048fcd3 in fast_function (f=0x43fc710, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#67 call_function (f=0x43fc710, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#68 PyEval_EvalFrameEx (f=0x43fc710, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (190): show
#69 0x000000000048fcd3 in fast_function (f=0x3067fa0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#70 call_function (f=0x3067fa0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#71 PyEval_EvalFrameEx (f=0x3067fa0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/location.py (127): show
#72 0x000000000048fcd3 in fast_function (f=0x3164d60, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#73 call_function (f=0x3164d60, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#74 PyEval_EvalFrameEx (f=0x3164d60, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (98): call_dialog
#75 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1c43dc8, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x2f225d0, argcount=2, kws=0x2f225e0, kwcount=0, 
    defs=0x1cccb28, defcount=1, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/graphics/dialog.py (98): call_dialog
#76 0x000000000048ef48 in fast_function (f=0x2f22440, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3708
#77 call_function (f=0x2f22440, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#78 PyEval_EvalFrameEx (f=0x2f22440, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/map.py (424): open_location
#79 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1cdc828, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x45379b0, argcount=2, kws=0x1ca04b0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/screens/map.py (424): open_location
#80 0x00000000004d99c9 in function_call (func=0x1ce9320, arg=0x4537998, 
    kw=0x2ba1340) at ../Objects/funcobject.c:517
#81 0x00000000004186a3 in PyObject_Call (func=0x7247a0, arg=0x4ec5dd, 
    kw=0x4f20e8) at ../Objects/abstract.c:1861
#82 0x000000000048db4f in ext_do_call (f=0x2ec45d0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3892
#83 PyEval_EvalFrameEx (f=0x2ec45d0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2344
    ;; /usr/share/games/singularity/code/graphics/button.py (152): activated
#84 0x000000000048fcd3 in fast_function (f=0x2eb7fb0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#85 call_function (f=0x2eb7fb0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#86 PyEval_EvalFrameEx (f=0x2eb7fb0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (122): 
activate_with_sound
#87 0x000000000048fcd3 in fast_function (f=0x2ecfeb0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#88 call_function (f=0x2ecfeb0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#89 PyEval_EvalFrameEx (f=0x2ecfeb0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (110): handle_event
#90 0x000000000048fcd3 in fast_function (f=0x43fa4e0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#91 call_function (f=0x43fa4e0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#92 PyEval_EvalFrameEx (f=0x43fa4e0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (319): call_handlers
#93 0x000000000048fcd3 in fast_function (f=0x2ea8bb0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#94 call_function (f=0x2ea8bb0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#95 PyEval_EvalFrameEx (f=0x2ea8bb0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (306): handle
#96 0x000000000048fcd3 in fast_function (f=0x2ecd560, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#97 call_function (f=0x2ecd560, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#98 PyEval_EvalFrameEx (f=0x2ecd560, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (190): show
#99 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1c48288, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x2c7a428, argcount=1, kws=0x2f1ead0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/graphics/dialog.py (190): show
#100 0x00000000004d99c9 in function_call (func=0x1cd36e0, 
    arg=0x2c7a410, kw=0x2f17640) at ../Objects/funcobject.c:517
#101 0x00000000004186a3 in PyObject_Call (func=0x7247a0, arg=0x4ec5dd, 
    kw=0x4f20e8) at ../Objects/abstract.c:1861
#102 0x000000000048db4f in ext_do_call (f=0x1c80310, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3892
#103 PyEval_EvalFrameEx (f=0x1c80310, throwflag=<value optimized out>)
    at ../Python/ceval.c:2344
    ;; /usr/share/games/singularity/code/safety.py (59): safe_call
#104 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1d1bb70, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x4, argcount=1, kws=0x2f01e78, kwcount=1, defs=0x1d23c98, 
    defcount=3, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/safety.py (59): safe_call
#105 0x000000000048ef48 in fast_function (f=0x2f01cd0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3708
#106 call_function (f=0x2f01cd0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#107 PyEval_EvalFrameEx (f=0x2f01cd0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/map.py (464): show
#108 0x000000000048fcd3 in fast_function (f=0x2ecc980, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#109 call_function (f=0x2ecc980, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#110 PyEval_EvalFrameEx (f=0x2ecc980, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (98): call_dialog
#111 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1c43dc8, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x2f00b20, argcount=2, kws=0x2f00b30, kwcount=0, 
    defs=0x1cccb28, defcount=1, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/graphics/dialog.py (98): call_dialog
#112 0x000000000048ef48 in fast_function (f=0x2f00990, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3708
#113 call_function (f=0x2f00990, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#114 PyEval_EvalFrameEx (f=0x2f00990, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/screens/main_menu.py (89): new_game
#115 0x00000000004904ac in PyEval_EvalCodeEx (co=0x1cdc210, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x1cd5228, argcount=1, kws=0x2c45ca0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/screens/main_menu.py (89): new_game
#116 0x00000000004d99c9 in function_call (func=0x1cef2a8, 
    arg=0x1cd5210, kw=0x2c989b0) at ../Objects/funcobject.c:517
#117 0x00000000004186a3 in PyObject_Call (func=0x7247a0, arg=0x4ec5dd, 
    kw=0x4f20e8) at ../Objects/abstract.c:1861
#118 0x000000000048db4f in ext_do_call (f=0x2eca1e0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3892
#119 PyEval_EvalFrameEx (f=0x2eca1e0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2344
    ;; /usr/share/games/singularity/code/graphics/button.py (152): activated
#120 0x000000000048fcd3 in fast_function (f=0x2ef25a0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#121 call_function (f=0x2ef25a0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#122 PyEval_EvalFrameEx (f=0x2ef25a0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (122): 
activate_with_sound
#123 0x000000000048fcd3 in fast_function (f=0x2f02340, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#124 call_function (f=0x2f02340, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#125 PyEval_EvalFrameEx (f=0x2f02340, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/button.py (110): handle_event
#126 0x000000000048fcd3 in fast_function (f=0x2eed570, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#127 call_function (f=0x2eed570, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#128 PyEval_EvalFrameEx (f=0x2eed570, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (319): call_handlers
#129 0x000000000048fcd3 in fast_function (f=0x2ea22e0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#130 call_function (f=0x2ea22e0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#131 PyEval_EvalFrameEx (f=0x2ea22e0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (306): handle
#132 0x000000000048fcd3 in fast_function (f=0x2c36500, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#133 call_function (f=0x2c36500, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#134 PyEval_EvalFrameEx (f=0x2c36500, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/graphics/dialog.py (190): show
#135 0x000000000048fcd3 in fast_function (f=0x17888b0, 
    throwflag=<value optimized out>) at ../Python/ceval.c:3698
#136 call_function (f=0x17888b0, throwflag=<value optimized out>)
    at ../Python/ceval.c:3633
#137 PyEval_EvalFrameEx (f=0x17888b0, throwflag=<value optimized out>)
    at ../Python/ceval.c:2304
    ;; /usr/share/games/singularity/code/singularity.py (226): <module>
#138 0x00000000004904ac in PyEval_EvalCodeEx (co=0x7fd9b33e97b0, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, 
    closure=0x0) at ../Python/ceval.c:2875
    ;; /usr/share/games/singularity/code/singularity.py (226): <module>
#139 0x00000000004906a2 in PyEval_EvalCode (co=0x7247a0, 
    globals=0x4ec5dd, locals=0x4f20e8) at ../Python/ceval.c:514
#140 0x00000000004a4d3a in PyImport_ExecCodeModuleEx (
    name=0x7fff4e92aa40 "code.singularity", co=0x7fd9b33e97b0, 
    pathname=0x7fff4e928910 
"/usr/share/games/singularity/code/singularity.pyc") at ../Python/import.c:675
#141 0x00000000004a4fe8 in load_source_module (
    name=0x7fff4e92aa40 "code.singularity", 
    pathname=0x7fff4e928910 
"/usr/share/games/singularity/code/singularity.pyc", fp=<value optimized out>) 
at ../Python/import.c:959
#142 0x00000000004a6594 in import_submodule (mod=0x7fd9b3401558, 
    subname=0x7fff4e92aa45 "singularity", 
    fullname=0x7fff4e92aa40 "code.singularity")
    at ../Python/import.c:2400
#143 0x00000000004a681c in load_next (mod=0x7fd9b3401558, 
    altmod=0x7fd9b3401558, p_name=<value optimized out>, 
    buf=0x7fff4e92aa40 "code.singularity", p_buflen=0x7fff4e92ba48)
    at ../Python/import.c:2220
#144 0x00000000004a6ec1 in import_module_level (name=0x0, 
    globals=<value optimized out>, locals=<value optimized out>, 
    fromlist=0x72b860, level=-1) at ../Python/import.c:2008
#145 0x00000000004a722f in PyImport_ImportModuleLevel (
    name=0x7fd9b34013d4 "code.singularity", globals=0x1791520, 
    locals=0x1791520, fromlist=0x72b860, level=-1)
    at ../Python/import.c:2072
#146 0x0000000000488fa9 in builtin___import__ (
    self=<value optimized out>, args=<value optimized out>, 
    kwds=<value optimized out>) at ../Python/bltinmodule.c:47
#147 0x00000000004186a3 in PyObject_Call (func=0x7247a0, arg=0x4ec5dd, 
    kw=0x4f20e8) at ../Objects/abstract.c:1861
#148 0x0000000000489472 in PyEval_CallObjectWithKeywords (
    func=0x7fd9b34155f0, arg=0x7fd9b33da8e8, kw=0x0)
    at ../Python/ceval.c:3481
#149 0x000000000048bc3d in PyEval_EvalFrameEx (f=0x17dc840, 
    throwflag=<value optimized out>) at ../Python/ceval.c:2093
    ;; singularity.py (1): <module>
#150 0x00000000004904ac in PyEval_EvalCodeEx (co=0x7fd9b33ef198, 
    globals=<value optimized out>, locals=<value optimized out>, 
    args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, 
    closure=0x0) at ../Python/ceval.c:2875
    ;; singularity.py (1): <module>
#151 0x00000000004906a2 in PyEval_EvalCode (co=0x7247a0, 
    globals=0x4ec5dd, locals=0x4f20e8) at ../Python/ceval.c:514
#152 0x00000000004af898 in run_mod (fp=0x176e010, 
    filename=0x7fff4e92c894 "singularity.py", 
    start=<value optimized out>, globals=0x1791520, locals=0x1791520, 
    closeit=1, flags=0x7fff4e92bfe0) at ../Python/pythonrun.c:1273
#153 PyRun_FileExFlags (fp=0x176e010, 
    filename=0x7fff4e92c894 "singularity.py", 
    start=<value optimized out>, globals=0x1791520, locals=0x1791520, 
    closeit=1, flags=0x7fff4e92bfe0) at ../Python/pythonrun.c:1259
#154 0x00000000004afb3b in PyRun_SimpleFileExFlags (fp=0x176e010, 
    filename=0x7fff4e92c894 "singularity.py", closeit=1, 
    flags=0x7fff4e92bfe0) at ../Python/pythonrun.c:879
#155 0x0000000000414572 in Py_Main (argc=1, argv=<value optimized out>)
    at ../Modules/main.c:532
#156 0x00007fd9b266dabd in __libc_start_main () from /lib/libc.so.6
#157 0x00000000004139d9 in _start ()
(gdb) x/4bx 0x2c6ce94
0x2c6ce94:  0xc2        0xa0    0x00    0x5f
(gdb) print unicode_default_encoding
$22 = "ascii", '\000' <repeats 94 times>
(gdb)

Python is trying to convert the bytes 0xC2 0xA0 from ASCII to
Unicode, but ASCII does not allow such bytes.  Those bytes are
U+00A0 encoded in UTF-8.  U+00A0 is the thousands separator in
fi_FI.UTF-8.

It turns out this bug does not occur if I dpkg-reconfigure
locales and enable the en_US.UTF-8 locale.  Originally, I had
only the fi_FI.UTF-8 locale installed.  Clearly, the en_US.UTF-8
locale is not mandatory if the locales package allows it to be
omitted.  I suppose it is okay for the singularity game to
require operating-system support for the locale that is selected
within the game; but at least it should give an error message
that says what the problem is, rather than claim the numbers
typed by the player are not valid.

-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (900, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-trunk-amd64 (SMP w/2 CPU cores)
Locale: LANG=fi_FI.UTF-8, LC_CTYPE=fi_FI.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages singularity depends on:
ii  python                  2.5.4-4          An interactive high-level object-o
ii  python-numpy            1:1.3.0-3        Numerical Python adds a fast array
ii  python-pygame           1.8.1release-1.1 SDL bindings for games development
ii  python-support          1.0.6            automated rebuilding support for P
ii  ttf-dejavu-core         2.30-2           Vera font family derivate with add

Versions of packages singularity recommends:
ii  singularity-music             006-1      Music for Endgame: Singularity gam

Versions of packages singularity suggests:
pn  timidity                      <none>     (no description available)

-- no debconf information

Attachment: pgpN7ON6ms3LP.pgp
Description: PGP signature

Reply via email to