Bug #3302
Updated by jeremyevans0 (Jeremy Evans) over 4 years ago
=begin 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 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. Also using Win32::API works. Jarmo =end