--- Begin Message ---
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
pgpWmdeddHdUs.pgp
Description: PGP signature
--- End Message ---