Project

General

Profile

Bug #3302

segfault in 1.8.6 p398 in Ruby::DL

Added by juuser (Jarmo Pertman) about 10 years ago. Updated 12 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:30271]

Description

=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

Also available in: Atom PDF