segfault in 1.8.6 p398 in Ruby::DL
I tried to call a simple method on Windows (XP 32bit, Win7 64bit - didn't matter)
machine and it seems that i will get a segmentation fault depending of
the Ruby version.
Here is the offending code (doc for EnumWindows is at
USER32 = DL.dlopen("user32")
EnumWindows = USER32['EnumWindows', 'IPL']
CALLBACK = DL.callback('ILL') do |curr_hwnd, p|
And when trying to run it with different Ruby 1.8.6 patchlevels, i see
the following output:
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
ruby 1.8.6 (2010-02-04 patchlevel 398) [i386-mingw32]
S:/testing.rb:20: [BUG] Segmentation fault
ruby 1.8.6 (2010-02-04) [i386-mingw32]
This application has requested the Runtime to terminate it in an unusual
Please contact the application's support team for more information.
So, p398 gives me a segfault. On the other hand FFI example at
http://wiki.github.com/ffi/ffi/windows-examples works perfectly. Also using Win32::API works.
Updated by juuser (Jarmo Pertman) over 10 years ago
I'm not sure since it seems that Ruby 1.9.1 has changed it's API for DL and this code won't run without modifications. If you can understand all of the changes to be needed, then let me know and I can try. I myself, didn't understand how to modify line EnumWindows = USER32['EnumWindows', 'IPL'] to make it work with 1.9.1 for example.