From: Jarmo Pertman Date: 2010-05-14T06:24:16+09:00 Subject: segmentation fault while using Ruby::DL Hello. I tried to call a simple method on Windows (XP, Win7 - didn't matter) machine and it seems that i will get a segmentation fault depending of the Ruby version. Any ideas why that might happen? Here is the offending code (doc for EnumWindows is at http://msdn.microsoft.com/en-us/library/ms633497(v=VS.85).aspx): require 'dl/import' module Testing extend DL::Importable dlload "user32.dll" USER32 = DL.dlopen("user32") EnumWindows = USER32['EnumWindows', 'IPL'] CALLBACK = DL.callback('ILL') do |curr_hwnd, p| p curr_hwnd 0 end module_function def enumerate EnumWindows.call(CALLBACK, 0) end end Testing.enumerate ------------------- And when trying to run it with different Ruby 1.8.6 patchlevels, i see the following output: S:\>ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] S:\>testing.rb 328312 S:\>ruby -v ruby 1.8.6 (2010-02-04 patchlevel 398) [i386-mingw32] S:\>testing.rb 393884 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 way. 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. Does that mean that I have to convert one old Ruby lib to use FFI altogether? Or even if it doesn't mean that, then would you recommend me to do it? Jarmo -- Posted via http://www.ruby-forum.com/.