Project

General

Profile

Bug #12183

require "win32ole" すると終了ステータスが必ず 0 になる

Added by k_satoda (Kazutoshi SATODA) about 3 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-cygwin]
[ruby-dev:49518]

Description

プログラム中で require "win32ole" するとそのプログラムが途中でエラーに
なっても終了ステータスが必ず 0 (正常終了)になり、呼び出し側で正しく
エラー判別できません。

$ ruby -e 'require "win32ole"; abort'; echo $?
0

require "win32ole" しない場合は問題なく、終了ステータスが異常終了を
示します。

$ ruby -e 'abort'; echo $?
1

win32ole 以外でも問題ありません。

$ ruby -e 'require "csv"; abort'; echo $?
1

Cygwin ruby 2.0.x では問題ありませんでしたが、 2.2.4 にバージョンを
上げたところで問題が起こりました。複数の環境で再現できています。

Associated revisions

Revision d5e55668
Added by usa (Usaku NAKAMURA) over 2 years ago

merge revision(s) 49495: [Backport #12183]

* ext/win32ole/win32ole.c (Init_win32ole): should not use atexit to
  free allocated hash table to avoid error on Cygwin.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@56303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 56303
Added by usa (Usaku NAKAMURA) over 2 years ago

merge revision(s) 49495: [Backport #12183]

* ext/win32ole/win32ole.c (Init_win32ole): should not use atexit to
  free allocated hash table to avoid error on Cygwin.

History

Updated by shyouhei (Shyouhei Urabe) about 3 years ago

  • Status changed from Open to Assigned
  • Assignee set to suke (Masaki Suketa)

Updated by usa (Usaku NAKAMURA) about 3 years ago

あまり役に立たない情報かもしれませんが、mswin64ではどのバージョンでも問題が再現しないことを確認しました。

Updated by nobu (Nobuyoshi Nakada) about 3 years ago

r54533では再現できませんでした。

Updated by suke (Masaki Suketa) about 3 years ago

Cygwin パッケージ同梱のRubyでは再現しました。
自分でビルドしたruby 2.2.4p230 では再現しました。
自分でビルドしたruby 2.3.0 では再現しませんでした。
trunk でも再現しませんでした。

$ /usr/bin/ruby -ve 'require "win32ole"; abort'; echo $?
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-cygwin]
0
$ /usr/local/ruby_2_2_4/bin/ruby -ve 'require "win32ole"; abort'; echo $?
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-cygwin]
0
$ /usr/local/ruby_2_3_0/bin/ruby -ve 'require "win32ole"; abort'; echo $?
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-cygwin]
1
$ /usr/local/bin/ruby -ve 'require "win32ole"; abort'; echo $?
ruby 2.4.0dev (2016-04-16 trunk 54610) [x86_64-cygwin]
1

Updated by suke (Masaki Suketa) about 3 years ago

  • Assignee changed from suke (Masaki Suketa) to nagachika (Tomoyuki Chikanaga)
  • Backport changed from 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.1: DONTNEED, 2.2: REQUIRED, 2.3: REQUIRED

手元で r49495 の修正で事象が解消されることを確認しました。

https://github.com/ruby/ruby/commit/99eaebcea3ae30f14da659cfd2d5b3b00ff9d351

Updated by suke (Masaki Suketa) about 3 years ago

  • Backport changed from 2.1: DONTNEED, 2.2: REQUIRED, 2.3: REQUIRED to 2.1: DONTNEED, 2.2: REQUIRED, 2.3: DONTNEED

Updated by nagachika (Tomoyuki Chikanaga) over 2 years ago

  • Assignee changed from nagachika (Tomoyuki Chikanaga) to usa (Usaku NAKAMURA)
  • Status changed from Assigned to Closed

すみません見逃がしてました。
trunk で修正済みなので close します。また2.2 のメンテナ交代にあわせて一応担当者変更しておきます。

Updated by usa (Usaku NAKAMURA) over 2 years ago

  • Backport changed from 2.1: DONTNEED, 2.2: REQUIRED, 2.3: DONTNEED to 2.1: DONTNEED, 2.2: DONE, 2.3: DONTNEED

ruby_2_2 r56303 merged revision(s) 49495.

Also available in: Atom PDF