From: "phasis68 (Heesob Park)" Date: 2012-04-16T22:27:37+09:00 Subject: [ruby-core:44389] [ruby-trunk - Bug #6303] dln_load and rb_w32_check_imported cause segfault in Ruby 1.9.3 for some extension Issue #6303 has been updated by phasis68 (Heesob Park). The changeset r35352 is not same to my patch and the bug #6303 is not fixed. After applying r35352, require 'mswin32/ibm_db' falls into infinite loop and runs forever. The line if (IMAGE_SNAP_BY_ORDINAL(pint->u1.Ordinal)) continue; should be if (IMAGE_SNAP_BY_ORDINAL(pint->u1.Ordinal)) {pint++;piat++;continue;} ---------------------------------------- Bug #6303: dln_load and rb_w32_check_imported cause segfault in Ruby 1.9.3 for some extension https://bugs.ruby-lang.org/issues/6303#change-25935 Author: luislavena (Luis Lavena) Status: Closed Priority: Normal Assignee: Category: Target version: ruby -v: Hello, NOTE: Reporting this here since bugs.ruby-lang.org seems to be down. Recently a user reported to RubyInstaller project issues when loading a Ruby 1.9.2 compiled extension under Ruby 1.9.3: https://groups.google.com/d/msg/rubyinstaller/aSezE2LwfQs/TDZvPG3X5mUJ Which I was able to study a bit better: https://groups.google.com/d/msg/rubyinstaller/aSezE2LwfQs/UGKlButpNfMJ To add more, my last comment was: "Is worth to mention that this do not fail against 1.9.2 (either building or running) but dln_load mechanism on Ruby 1.9.2 differs from Ruby 1.9.3 and highly unlikely is going to change." I'm not convinced by my last comment and I do believe this is a bug. db2cli.dll links to MSVCR80 and even so, it loads properly under 1.9.2. Looking closely to what rb_w32_check_imported does, it is supposed to verify that the extension being loaded it is indeed using the right ruby dll. But is failing to obtain Name from pii (PIMAGE_IMPORT_BY_NAME struct) I can't find any reference to dbghelp (which provides ImageDirectoryEntryToData) being included or linked in msvcrt-libruby191.dll For sure I'm missing something, specially why is failing to obtain this extension information when works for others. Thank you. -- Luis Lavena AREA 17 - Perfection in design is achieved not when there is nothing more to add, but rather when there is nothing more to take away. Antoine de Saint-Exup��ry -- http://bugs.ruby-lang.org/