[MacRuby] #862: [BUG] ERROR(VpDivd): space for remainder too small
#862: [BUG] ERROR(VpDivd): space for remainder too small ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Sometimes, crashes as follows when running with Ruby 1.9.2 Unit Test of attached. {{{ $ DYLD_LIBRARY_PATH=. ./macruby -I./lib test_bigdecimal.rb Loaded suite test_bigdecimal Started ........FF.F..F....F......E.......F..F.unknown: [BUG] ERROR(VpDivd): space for remainder too small. MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, x86_64] zsh: abort DYLD_LIBRARY_PATH=. ./macruby -I./lib test_bigdecimal.rb }}} The backtrace cannot be seen with GDB. {{{ (gdb) r Starting program: /Users/watson/src/MacRuby/macruby -I./lib test_bigdecimal.rb Reading symbols for shared libraries + done Loaded suite test_bigdecimal Started ........FF.F..E....F......E......EF..F.E..F.../Users/watson/src/MacRuby/lib/minitest/unit.rb:670:in `run:': failed to allocate memory (NoMemoryError) from /Users/watson/src/MacRuby/lib/minitest/unit.rb:635:in `block' from /Users/watson/src/MacRuby/lib/minitest/unit.rb:633:in `run_test_suites:' from /Users/watson/src/MacRuby/lib/minitest/unit.rb:576:in `run:' Program exited with code 01. (gdb) bt No stack. (gdb) }}} It seems to crash in the test named test_power. {{{ $ DYLD_LIBRARY_PATH=. ./macruby -I./lib test_bigdecimal.rb -v Loaded suite test_bigdecimal Started TestBigDecimal#test_abs_bigdecimal: 0.18 s: . TestBigDecimal#test_add: 0.02 s: . TestBigDecimal#test_add_bigdecimal: 0.01 s: . TestBigDecimal#test_ceil: 0.01 s: . TestBigDecimal#test_cmp: 0.04 s: . TestBigDecimal#test_cmp_bignum: 0.01 s: . TestBigDecimal#test_cmp_coerce: 0.03 s: . TestBigDecimal#test_cmp_data: 0.01 s: . TestBigDecimal#test_cmp_failing_coercion: 0.22 s: F TestBigDecimal#test_cmp_nan: 0.01 s: F TestBigDecimal#test_coerce: 0.01 s: . TestBigDecimal#test_ctov: 0.03 s: F TestBigDecimal#test_div: 0.02 s: . TestBigDecimal#test_div_bigdecimal: 0.01 s: . TestBigDecimal#test_divmod: 0.18 s: F TestBigDecimal#test_double_fig: 0.01 s: . TestBigDecimal#test_exception_infinity: 0.10 s: . TestBigDecimal#test_exception_nan: 0.01 s: . TestBigDecimal#test_exception_overflow: 0.02 s: . TestBigDecimal#test_exception_underflow: 0.02 s: F TestBigDecimal#test_exception_zerodivide: 0.02 s: . TestBigDecimal#test_exponent: 0.01 s: . TestBigDecimal#test_finite_infinite_nan: 0.02 s: . TestBigDecimal#test_fix: 0.01 s: . TestBigDecimal#test_floor: 0.01 s: . TestBigDecimal#test_frac: 0.01 s: . TestBigDecimal#test_gc: 0.02 s: E TestBigDecimal#test_global_new: 0.01 s: . TestBigDecimal#test_hash: 0.02 s: . TestBigDecimal#test_inf: 0.03 s: . TestBigDecimal#test_inspect: 0.02 s: . TestBigDecimal#test_limit: 0.02 s: . TestBigDecimal#test_marshal: 0.03 s: . TestBigDecimal#test_mod: 0.01 s: . TestBigDecimal#test_mode: 0.02 s: F TestBigDecimal#test_mult: 0.01 s: . TestBigDecimal#test_mult_bigdecimal: 0.01 s: . TestBigDecimal#test_new: 0.02 s: F TestBigDecimal#test_nonzero_p: 0.01 s: . TestBigDecimal#test_power: unknown: [BUG] ERROR(VpDivd): space for remainder too small. MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, x86_64] zsh: abort DYLD_LIBRARY_PATH=. ./macruby -I./lib test_bigdecimal.rb -v }}} Crash log: {{{ Process: macruby [89312] Path: /Users/watson/src/MacRuby/macruby Identifier: macruby Version: ??? (???) Code Type: X86-64 (Native) Parent Process: zsh [89167] Date/Time: 2010-08-20 17:11:17.038 +0900 OS Version: Mac OS X 10.6.4 (10F569) Report Version: 6 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Application Specific Information: objc[89312]: garbage collection is ON abort() called Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 libSystem.B.dylib 0x00007fff815783d6 __kill + 10 1 libSystem.B.dylib 0x00007fff81618972 abort + 83 2 libmacruby.1.9.2.dylib 0x000000010003cb9d rb_bug + 205 (error.c:229) 3 bigdecimal.bundle 0x00000001036e31be VpDivd + 1870 (bigdecimal.c:3266) 4 bigdecimal.bundle 0x00000001036e4375 BigDecimal_power + 917 (bigdecimal.c:4670) 5 libmacruby.1.9.2.dylib 0x0000000100140bab rb_vm_dispatch + 6651 (dispatcher.cpp:161) 6 ??? 0x0000000103c07070 0 + 4357910640 7 ??? 0x0000000103c412eb 0 + 4358148843 8 libmacruby.1.9.2.dylib 0x0000000100140bc6 rb_vm_dispatch + 6678 (dispatcher.cpp:159) 9 libmacruby.1.9.2.dylib 0x00000001000fe380 rb_f_send + 416 (vm_eval.c:169) 10 libmacruby.1.9.2.dylib 0x0000000100140c69 rb_vm_dispatch + 6841 (dispatcher.cpp:435) 11 ??? 0x0000000103c07070 0 + 4357910640 12 ??? 0x0000000103c263f5 0 + 4358038517 13 libmacruby.1.9.2.dylib 0x0000000100140bab rb_vm_dispatch + 6651 (dispatcher.cpp:161) 14 ??? 0x0000000103c07070 0 + 4357910640 15 ??? 0x0000000103c25b07 0 + 4358036231 16 libmacruby.1.9.2.dylib 0x0000000100143787 rb_vm_yield_args + 1895 (dispatcher.cpp:100) 17 libmacruby.1.9.2.dylib 0x00000001000fd788 rb_yield + 40 18 libmacruby.1.9.2.dylib 0x00000001000148cd rary_each + 77 (array.c:1065) 19 libmacruby.1.9.2.dylib 0x0000000100140bc6 rb_vm_dispatch + 6678 (dispatcher.cpp:159) 20 ??? 0x0000000103c07070 0 + 4357910640 21 ??? 0x0000000103c24fff 0 + 4358033407 22 libmacruby.1.9.2.dylib 0x0000000100143787 rb_vm_yield_args + 1895 (dispatcher.cpp:100) 23 libmacruby.1.9.2.dylib 0x00000001000fd788 rb_yield + 40 24 libmacruby.1.9.2.dylib 0x00000001000148cd rary_each + 77 (array.c:1065) 25 libmacruby.1.9.2.dylib 0x0000000100140bc6 rb_vm_dispatch + 6678 (dispatcher.cpp:159) 26 ??? 0x0000000103c07070 0 + 4357910640 27 ??? 0x0000000103c247e7 0 + 4358031335 28 libmacruby.1.9.2.dylib 0x0000000100140bab rb_vm_dispatch + 6651 (dispatcher.cpp:161) 29 ??? 0x0000000103c07070 0 + 4357910640 30 ??? 0x0000000103c22375 0 + 4358022005 31 libmacruby.1.9.2.dylib 0x0000000100140bab rb_vm_dispatch + 6651 (dispatcher.cpp:161) 32 ??? 0x0000000103c07070 0 + 4357910640 33 ??? 0x0000000103c211f1 0 + 4358017521 34 libmacruby.1.9.2.dylib 0x0000000100142569 rb_vm_block_eval + 1401 (dispatcher.cpp:98) 35 libmacruby.1.9.2.dylib 0x000000010015183a rb_rescue2 + 58 (vm.cpp:3395) 36 libmacruby.1.9.2.dylib 0x000000010003f7f0 ruby_finalize + 96 (eval_jump.c:60) 37 libmacruby.1.9.2.dylib 0x000000010009f720 rb_exit + 16 38 macruby 0x0000000100000d2f main + 159 (main.cpp:43) 39 macruby 0x0000000100000c88 start + 52 Thread 1: Dispatch queue: com.apple.libdispatch-manager --- snip --- }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/862> MacRuby <http://macruby.org/>
#862: [BUG] ERROR(VpDivd): space for remainder too small ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by watson1978@…): Is it another problem that the log of GDB shows? -- Ticket URL: <http://www.macruby.org/trac/ticket/862#comment:1> MacRuby <http://macruby.org/>
#862: [BUG] ERROR(VpDivd): space for remainder too small ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by lsansonetti@…): Looks like it's crashing in bigdecimal.c:3266. Should be easy to fix :) The bigdecimal extension hasn't been touched for a while, maybe some fixes exist in 1.9 upstream. -- Ticket URL: <http://www.macruby.org/trac/ticket/862#comment:2> MacRuby <http://macruby.org/>
#862: [BUG] ERROR(VpDivd): space for remainder too small ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by lsansonetti@…): I was able to identify many problems in ext/bigdecimal/bigdecimal.c. Stack overflow, head overflow... in general the code is very bad. I am wondering if we should spend time fixing it, or invest time to write a better implementation. -- Ticket URL: <http://www.macruby.org/trac/ticket/862#comment:3> MacRuby <http://macruby.org/>
#862: [BUG] ERROR(VpDivd): space for remainder too small ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: closed Priority: blocker | Milestone: MacRuby 0.7 Component: MacRuby | Resolution: fixed Keywords: | ----------------------------------+----------------------------------------- Changes (by lsansonetti@…): * status: new => closed * resolution: => fixed * milestone: => MacRuby 0.7 Comment: I just committed a better bigdecimal extension as r4501. It does not pass all the tests in test_bigdecimal.rb but it does not seem to crash anymore. At least, the "space for remainder too small" error does not seem to happen anymore. -- Ticket URL: <http://www.macruby.org/trac/ticket/862#comment:4> MacRuby <http://macruby.org/>
participants (1)
-
MacRuby