Ruby hangs on OSX


I encountered a strange problem.

When running “ruby soduku_test.rb -n test_next_cell” the process
hangs and eats up all of the assigned CPU . I have no idea why that
is … I asked a friend to run it on windows and it does work there.
The program yield in a stack overflow.

I recently reinstalled my computer and used darwinports. I don’t
think that I’ve seen that problem before. I also reinstalled ruby
again, but with not much success and the same thing happens on
another Mac too.

Installing ruby the way I used to do it before, using the
hivelogic tutorial, also didn’t work.

That are the versions that fail:

ruby 1.8.5 (2006-08-25) [i686-darwin8.8.3] # darwin ports 1.3.1,
gcc 4.0
ruby 1.8.4 (2005-12-24) [i686-darwin8.8.3] # directly from the
sources (hivelogic tutorial)
ruby 1.8.2 (2004-12-25) [universal-darwin8.0] # comes with Tiger

Both Macs (MB C2D, MBP CD) are running OSX 10.4.8 with all updates.

uname -v:
Darwin Kernel Version 8.8.3: Wed Oct 18 21:57:10 PDT 2006;

A stack trace of the “working” run on Windows is below this mail.

I attached the code. Unfortunately I haven’t been able to isolate
the problem, but at least the code consistently fails.

Any ideas? Can somebody please try it out on another Mac? I will
also do that later on.



still not sure what the problem really is about. As nobody
answered I assume this is something with my two described fresh

Anyway … What I found is that reducing the stack size from 8192
to 4096 with “ulimit -s 4096” it works. I get the stacklevel too deep

Now I am wondering what the “right” value and why is nobody else
hitting that wall?


Btw. The strange behaviour is not limited to stack overflows.

I also see now an interesting style of error reporting:

localhost:~//code/sudoku mkamp$ ruby sudoku_tests.rb
sudoku_tests.rb:231: warning: parenthesize argument(s) for future
sudoku_tests.rb:232: warning: parenthesize argument(s) for future
Loaded suite sudoku_tests
…E…E…EEE.type: code total: 150, empty: 28, code: 103, comment: 19
type: test total: 286, empty: 59, code: 222, comment: 5
Finished in 0.052318 seconds.

^C 1) Error:
NameError: undefined local variable or method possible' for #<Sudoku: 0x30b16c> ./sudoku.rb:74:insolve’
sudoku_tests.rb:125:in `test_empty’

^C 2) Error:
NameError: undefined local variable or method possible' for #<Sudoku: 0x356018> ./sudoku.rb:74:insolve’
sudoku_tests.rb:119:in `test_michl’

^C 3) Error:
NameError: undefined local variable or method possible' for #<Sudoku: 0x1de8dc> ./sudoku.rb:74:insolve’
sudoku_tests.rb:15:in `test_solve’

^C 4) Error:
NameError: undefined local variable or method possible' for #<Sudoku: 0x1c5c10> ./sudoku.rb:74:insolve’
sudoku_tests.rb:262:in solve_and_compare' sudoku_tests.rb:97:intest_solve_with_canned_complex_solution’

^C 5) Error:
NameError: undefined local variable or method possible' for #<Sudoku: 0x327e98> ./sudoku.rb:74:insolve’
sudoku_tests.rb:262:in solve_and_compare' sudoku_tests.rb:47:intest_solve_with_canned_simple_solution’

14 tests, 50 assertions, 0 failures, 5 errors

I have to press CTRL+C many times to end the program otherwise it
hangs and eats my CPU.

Any ideas? Any?

Btw. I tried to recompile ruby without -O2 in the CFLAGS, but that
didn’t change a thing except a 50% performance penality.


Hi Mariano,

Interestingly, the program you’ve sent around works for me on my G4
Powerbook using Ruby 1.8.4 built using Fink (same stack size you quoted
as well) - however I see the same problems you’ve described when
running the script under Linux (Debian testing, Ruby 1.8.4) and on my
Intel iMac at home (same environment & compiler as the G4, just
different architecture).

Looks like it’s a cross platform problem. Anyone have any ideas what
might be wrong or what other info we could send in to help diagnose it