変換オプション指定後にフリーズするバグ
環境によっては、 「音声ファイルを別の音声フォーマットに変換する」の「4.」の手順で、「OK」ボタンをクリックした後「Nautilus Script Audio Convert」がフリーズする現象が発生します。以下のように変換オプションが何もないにも関わらず、チェックボックスが表示される状況でこの現象が発生します。
例えば、音声ファイルを1つ選択してWAVファイルへの変換しようとすると、以下のようになります。
この状態で「OK」ボタンをクリックすると、以下のように「OK」ボタンが押されたままフリーズします。
この状況を「端末」から確認すると、以下のエラーが大量に発生しています。
(zenity:3629): GLib-WARNING **:
/build/buildd/glib2.0-2.32.3/./glib/giounix.c:411Error while getting
flags for FD: Bad file descriptor (9)
(zenity:3629): GLib-WARNING **:
/build/buildd/glib2.0-2.32.3/./glib/giounix.c:411Error while getting
flags for FD: Bad file descriptor (9)
(zenity:3629): GLib-WARNING **:
/build/buildd/glib2.0-2.32.3/./glib/giounix.c:411Error while getting
flags for FD: Bad file descriptor (9)
/build/buildd/glib2.0-2.32.3/./glib/giounix.c:411Error while getting
flags for FD: Bad file descriptor (9)
(zenity:3629): GLib-WARNING **:
/build/buildd/glib2.0-2.32.3/./glib/giounix.c:411Error while getting
flags for FD: Bad file descriptor (9)
(zenity:3629): GLib-WARNING **:
/build/buildd/glib2.0-2.32.3/./glib/giounix.c:411Error while getting
flags for FD: Bad file descriptor (9)
「Nautilus Script Audio Convert」が表示する画面は、「zenity」で表示している画面です。
似たような現象が以下で報告されています。
Nautilus Script Audio Convertを終了させる
この状況になってしまうと、もうどうしようもないので、以下のように「システムモニター」から「Nautilus Script Audio Convert」を終了させます。この状況になったら「システムモニター」を起動し、「プロセス名」から「zenity」を探します。
プロセスのプロパティーを見ると、コマンドラインが以下のようになっています。
zenity --list --checklist --column --column choose from the followin' options:
このコマンドラインを持つ「zenity」を終了させます。
「プロセスの終了」ボタンをクリックすればよいです。
回避策
オプション(選択肢)がない時にこの現象が発生するため、オプションがない時はこの画面を表示しないように修正します。1.ConvertAudioFileをrootで開く
「端末」を起動し、以下のコマンドを実行します。このコマンドを実行すれば、「Nautilus Script Audio Convert」のスクリプトファイルである「ConvertAudioFile」を「root」で開くことができます。
sudo -i gedit /usr/share/nautilus-scripts/ConvertAudioFile
2.修正箇所の確認
修正箇所の確認を行います。修正箇所は「ask_questions ()」関数です。
3.修正箇所の確認
以下のように赤枠の行を追加します。ask_questions () { repeat=1 if [[ -n ${questions[@]} ]]; then while [ $repeat -eq 1 ] do answers=`zenity --list --checklist --column "" --column "$options" "${questions[@]}"` if (echo "$answers" | grep -i "$ask_to_pass") && \ (echo "$answers" | grep -i "$ask_fields") then zenity --error --title="$warning" --text="$options_conflict" repeat=1 continue fi repeat=0 done fi }
ファイルを保存して修正完了です。