Project

General

Profile

Actions

Bug #13254

closed

Dir.exist? などで「ディスクがありません」ダイアログが表示される

Added by Anonymous about 7 years ago. Updated about 7 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x64-mswin64_140]
[ruby-dev:49988]

Description

概要

windows 10で使用しています。
sdカードリーダーにメディアを差していない状態で、同ドライブに Dir.exist? などを行うと、次のメッセージダイアログが表示されスクリプトの実行が一時停止します。
「キャンセル」か「続行」を2回クリックするとスクリプトが再開し、Dir.exist? であれば false を返します。

---------------------------
ruby.exe - ディスクがありません
---------------------------
ドライブにディスクがありません。 ディスクをドライブ H: に挿入してください。 
---------------------------
キャンセル   再実行(T)   続行(C)   
---------------------------

期待する動作

現状では手動操作が必要になるため、メッセージダイアログが表示されないこと、一時停止しないことを期待します。

手元での再現手順1

  1. sdカードリーダーをusbにつなぎ、sdカードをセットします。
  2. タスクトレイの「ハードウェアを安全に取り外してメディアを取り出す」からカードをアンマウントし、
     sdカードおよびカードリーダーを取り外します。
  3. メディアを差していないsdカードリーダーをusbにつなぎます。
  4. コマンドプロンプトで diskpart から list volume すると次の状態になっています。H: がカードリーダーです。
  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     E                       DVD-ROM         0 B  メディアなし
  Volume 1     D                NTFS   Partition    931 GB  正常
  Volume 2         システムで予約済み    NTFS   Partition     85 MB  正常         システム
  Volume 3     C                NTFS   Partition    111 GB  正常         ブート
  Volume 4                      NTFS   Partition    450 MB  正常         非表示
  Volume 5     H                       リムーバブル          0 B  メディアなし
  1. irb でいくつか試すと以下のようになります。
irb(main):001:0> Dir.exist?("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
irb(main):002:0> File.stat("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
Errno::ENXIO: No such device or address @ rb_file_s_stat - h:
        from (irb):2:in `stat'
        from (irb):2
        from c:/ruby/bin/irb.cmd:19:in `<main>'
irb(main):003:0> File.directory?("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false

手元での再現手順2

DVD ドライブの場合です。ダイアログは3回クリックすると閉じます。
a) DVD ドライブにディスクをセットします。
b) ディスクを取り出します。
c) irb での実行結果は以下のようになります。

irb(main):001:0> Dir.exist?("e:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
irb(main):002:0> File.stat("e:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
Errno::EINVAL: Invalid argument @ rb_file_s_stat - e:
        from (irb):2:in `stat'
        from (irb):2
        from c:/ruby/bin/irb.cmd:19:in `<main>'
irb(main):003:0> File.directory?("e:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false

Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #6535: [MinGW] Unexpected close program dialog for TestRubyOptions#test_segv_testClosednobu (Nobuyoshi Nakada)06/03/2012Actions

Updated by Anonymous about 7 years ago

  • Description updated (diff)

再現手順に漏れと誤りがありましたので、説明を編集しました。

  • 再現手順1に手順 1)~2) を追加しました。「DVD-ROM ドライブでは現象が起こらない」を削除しました。
  • DVD-ROM ドライブでも現象が起こったため、再現手順2を追加しました。
Actions #2

Updated by nobu (Nobuyoshi Nakada) about 7 years ago

  • Related to Bug #6535: [MinGW] Unexpected close program dialog for TestRubyOptions#test_segv_test added
Actions #3

Updated by nobu (Nobuyoshi Nakada) about 7 years ago

  • Status changed from Open to Closed

Applied in changeset r57741.


disable critical-error-handler

  • win32/win32.c (rb_w32_sysinit): disable critical-error-handler
    message box even on mswin, regardless of runtime DLL version.
    [ruby-dev:49988] [Bug #13254]

Updated by nobu (Nobuyoshi Nakada) about 7 years ago

  • Backport changed from 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN to 2.2: REQUIRED, 2.3: REQUIRED, 2.4: REQUIRED

Updated by naruse (Yui NARUSE) about 7 years ago

  • Backport changed from 2.2: REQUIRED, 2.3: REQUIRED, 2.4: REQUIRED to 2.2: REQUIRED, 2.3: REQUIRED, 2.4: DONE

ruby_2_4 r57936 merged revision(s) 57741.

Updated by usa (Usaku NAKAMURA) about 7 years ago

  • Backport changed from 2.2: REQUIRED, 2.3: REQUIRED, 2.4: DONE to 2.2: DONE, 2.3: REQUIRED, 2.4: DONE

ruby_2_2 r58097 merged revision(s) 57741.

Updated by nagachika (Tomoyuki Chikanaga) about 7 years ago

  • Backport changed from 2.2: DONE, 2.3: REQUIRED, 2.4: DONE to 2.2: DONE, 2.3: DONE, 2.4: DONE

ruby_2_3 r58181 merged revision(s) 57741.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0