[opensuse-ja] Test12.3: YaST Software Manager で沢山のパッケージを急いで追加するとSoftware ManagerがSEGVで落ちる。 (was: openSUSE 12.3 のテストへの協力のお願い)
昨日のIRCミーティングでもちょっとお話ししたのですが
12.3RC1 i586 GNOMEで YaST Software Manager で
沢山のパッケージを急いで追加するとSoftware Managerが
SEGVで落ちます。
https://dl.dropbox.com/u/86335040/openSUSE/SoftwareManagerSEGV.png
https://dl.dropbox.com/u/86335040/openSUSE/Screenshot_from_2013-02-24_22%3A0...
https://dl.dropbox.com/u/86335040/openSUSE/Screenshot_from_2013-02-24%2021%3...
再現方法:
1) YaST Software Managerを起動します。
2) Find KDEで絞り込みます。
3) 絞り込まれたパッケージを前から順番に急いで選びます。
4) 途中で
「There are some conflicts on the transaction that must be solved manually.」
等とメッセージが出たらcancelを選択します。
3) 4)を高速で続けたら、今までに4回再現しました。
特定のパッケージを選んだら落ちるという訳ではなさそうです。
以上ご報告いたします。
--
1xx
2013年2月24日 22:34 1xx
昨日のIRCミーティングでもちょっとお話ししたのですが
その際、crash dumpがあれば良いというお話があったと思うのですが、
crash dumpを採取するにはどうすれば良いのでしょうか?
また、一応~/.bashrcの最後に
ulimit -c unlimited
を記述してあるので、ユーザのコマンドラインレベルでcoreを採取することは
可能だと思うのですが、
openSUSEで、daemonなどシステムレベルでcoreを吐かせる正しい方法が
あれば教えてください。
--
1xx
On Sun, 24 Feb 2013 23:01:05 +0900
1xx
2013年2月24日 22:34 1xx
: 昨日のIRCミーティングでもちょっとお話ししたのですが
その際、crash dumpがあれば良いというお話があったと思うのですが、 crash dumpを採取するにはどうすれば良いのでしょうか?
また、一応~/.bashrcの最後に ulimit -c unlimited を記述してあるので、ユーザのコマンドラインレベルでcoreを採取することは 可能だと思うのですが、 openSUSEで、daemonなどシステムレベルでcoreを吐かせる正しい方法が あれば教えてください。
上記をダイレクトに回答すると、 "/etc/security/limits.conf" 内に "* soft core unlimited" という行を追記してシステムを再起動すると、 coreファイルを吐く (= "ulimit -c" で "unlimited" になる) ように なります (openSUSEだけでなく、他のLinuxでも使える方法です) 。 ただし、このままだとプロセス実行時のカレントディレクトリに出力されて しまうので、 "echo /var/crash/core.%e.%u.%t > /proc/sys/kernel/core_pattern" のように出力先のテンプレートを設定しておくと、もっと便利になるでしょう (ただしこちらはシステムを再起動すると元に戻ってしまいます)。 なお、再現がすぐにできるようなものであれば、"gdb (プログラム名)"や "gdb --pid=(PID)" でデバッガを起動し、"generate-core-file"コマンドで出力させ てもよいでしょう。 以上です。 -- Yasuhiko Kamata E-mail: belphegor@belbel.or.jp -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org
2013年2月25日 8:02 Yasuhiko Kamata
上記をダイレクトに回答すると、 "/etc/security/limits.conf" 内に "* soft core unlimited" という行を追記してシステムを再起動すると、 coreファイルを吐く (= "ulimit -c" で "unlimited" になる) ように なります (openSUSEだけでなく、他のLinuxでも使える方法です) 。
ただし、このままだとプロセス実行時のカレントディレクトリに出力されて しまうので、 "echo /var/crash/core.%e.%u.%t > /proc/sys/kernel/core_pattern" のように出力先のテンプレートを設定しておくと、もっと便利になるでしょう (ただしこちらはシステムを再起動すると元に戻ってしまいます)。
回答ありがとうございます。
合わせ技で/etc/sysctl.d/にファイルを作ることで
ブート時に自動的に/var/crash/へcoreを吐くよう設定を変更することにしました。
やったことをテスト手順にしました。
とりあえずこの後Software Managerが落ちる問題に関して
まずはhttps://bugzilla.novell.com/ に同様の問題が
既に報告されていないか調べてみたいと思います。
-------- core fileを出力するディレクトリを変更するテスト --------
* ulimit -c unlimited を実行する。
ulimit -a でcore file sizeがunlimitedになったか? 2013-02-25 OK
* cat を起動し<Ctrl>+\と入力したときcoreが生成されるか? 2013-02-25 OK
* sudo /sbin/sysctl -w kernel.core_pattern='/var/crash/core.%e.%u.%t'
で、/proc/sys/kernel/core_patternが/var/crash/core.%e.%u.%tに書き換わるか?
2013-02-25 OK
* sudo chmod o+w /var/crash で /var/crashのパーミッションが
drwxr-xrwx に変わるか? 2013-02-25 OK
* cat を起動し<Ctrl>+\と入力したとき/var/crash/ にcoreが吐かれるか? 2013-02-25 OK
* 以下の手順でリブート後に/var/crash/にcoreが生成されるようになるか?
1) /etc/security/limits.confに「* soft core unlimited」と書く。
2) /etc/sysctl.dにcore_pattern.confというファイルを以下の内容で作る。
kernel.core_pattern =/var/crash/core.%e.%u.%t
3) 古いcoreを消す。 sudo rm /var/crash/core.*
4) マシンリブート
5) cat を起動し<Ctrl>+\と入力
2013-02-25 OK
* 以上の操作で/var/crashにテスト用のcore以外にcoreが生成されていないか?
2013-02-25 NG
"core.dconf worker.1000.1361758042"というcoreファイルが生成されている。
-------- 問題 --------
* 2013-02-25 "core.dconf worker.1000.1361758042"という
coreファイルが生成されている。
fileコマンドによれば
from '/usr/bin/gnome-keyring-daemon --start --components=secrets'
とのこと。
もう一度rebootしたが、再現しない。
--------
--
1xx
libhoge0.rpm であれば
武山です 忙しさで反応が遅めですみません IRC でスタックトレースと言いましたが、y2log だけでも、大丈夫かもしれません。 # スタックトレースがあれば、あるで有用なんですが 一般的な YaST のバグを報告する方法を書いておきます 1. Bugzilla で既に報告済みではないかをチェック - http://bugzilla.novell.com - 苦労が水の泡にならないように - Bugzilla の検索機能は弱いので、Google 検索も併用すると良いと思います site:opensuse.org で Bugzilla の内容は ML にも転送されているので、ML のログもヒットします。 2. Bugzilla にレポートするときは /var/log/Yast/y2log を添付する - 長いので、必要そうな部分だけ切り出しても OK です - 何か関連するログが残っていないかチェックして、もしあればレポートの本文に書きましょう - LANG=c で YaST を実行しておかないと、相手が日本語が読めずに困ることがあります。 # ここ最近の SuSEconfig がらみだと、command not found と普通に出てたり… また、アプリケーションがクラッシュしたときはスタックトレースがあると、 原因の追及に役立ちます。 # KDE とかも、独自で crash ハンドラを持っています core ファイルをとっても良いのですが、gdb でも直接出せます。 $ gdb プログラム名 (gdb) run 引数 で実行して、クラッシュしたら、gdb を起動した端末に戻って (gdb) bt とすると、バックトレースが出ます。 単純にスタックトレースを出すと、関数名など一部の情報しか出力されません。 デバッグに必要な情報は -debuginfo が後ろに付いたパッケージに入っていて、 有用なスタックトレースを出すには、落ちたライブラリ等の debuginfo が必要です。 OSS リポジトリのパッケージの debuginfo は repo-debug リポジトリに入っています。 $ sudo zypper mr -e repo-debug でインストールする前に有効にしてあげて下さい。 # repo-debug-update は Update リポジトリのパッケージ用 例えば、libhoge.so.0.0.0 で落ちたような情報があれば(落ちる前後の情報も必要ですが) $ rpm -qf /usr/lib64/libhoge.so.0.0.0 でパッケージを特定して、出力が libhoge0-debuginfo.rpm をインストールしてから、スタックトレースを採取してみて下さい。 -- Fuminobu TAKEYAMA (2013/02/25 12:14), 1xx wrote:
2013年2月25日 8:02 Yasuhiko Kamata
: 上記をダイレクトに回答すると、 "/etc/security/limits.conf" 内に "* soft core unlimited" という行を追記してシステムを再起動すると、 coreファイルを吐く (= "ulimit -c" で "unlimited" になる) ように なります (openSUSEだけでなく、他のLinuxでも使える方法です) 。
ただし、このままだとプロセス実行時のカレントディレクトリに出力されて しまうので、 "echo /var/crash/core.%e.%u.%t > /proc/sys/kernel/core_pattern" のように出力先のテンプレートを設定しておくと、もっと便利になるでしょう (ただしこちらはシステムを再起動すると元に戻ってしまいます)。
回答ありがとうございます。 合わせ技で/etc/sysctl.d/にファイルを作ることで ブート時に自動的に/var/crash/へcoreを吐くよう設定を変更することにしました。
やったことをテスト手順にしました。
とりあえずこの後Software Managerが落ちる問題に関して まずはhttps://bugzilla.novell.com/ に同様の問題が 既に報告されていないか調べてみたいと思います。
-------- core fileを出力するディレクトリを変更するテスト -------- * ulimit -c unlimited を実行する。 ulimit -a でcore file sizeがunlimitedになったか? 2013-02-25 OK * cat を起動し<Ctrl>+\と入力したときcoreが生成されるか? 2013-02-25 OK
* sudo /sbin/sysctl -w kernel.core_pattern='/var/crash/core.%e.%u.%t' で、/proc/sys/kernel/core_patternが/var/crash/core.%e.%u.%tに書き換わるか? 2013-02-25 OK
* sudo chmod o+w /var/crash で /var/crashのパーミッションが drwxr-xrwx に変わるか? 2013-02-25 OK
* cat を起動し<Ctrl>+\と入力したとき/var/crash/ にcoreが吐かれるか? 2013-02-25 OK
* 以下の手順でリブート後に/var/crash/にcoreが生成されるようになるか? 1) /etc/security/limits.confに「* soft core unlimited」と書く。 2) /etc/sysctl.dにcore_pattern.confというファイルを以下の内容で作る。 kernel.core_pattern =/var/crash/core.%e.%u.%t
3) 古いcoreを消す。 sudo rm /var/crash/core.* 4) マシンリブート 5) cat を起動し<Ctrl>+\と入力
2013-02-25 OK
* 以上の操作で/var/crashにテスト用のcore以外にcoreが生成されていないか? 2013-02-25 NG "core.dconf worker.1000.1361758042"というcoreファイルが生成されている。
-------- 問題 --------
* 2013-02-25 "core.dconf worker.1000.1361758042"という coreファイルが生成されている。 fileコマンドによれば from '/usr/bin/gnome-keyring-daemon --start --components=secrets' とのこと。
もう一度rebootしたが、再現しない。
--------
-- 1xx
https://twitter.com/ItSANgo http://d.hatena.ne.jp/Itisango/
-- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org
2013年2月25日 13:37 Fuminobu TAKEYAMA
武山です
忙しさで反応が遅めですみません IRC でスタックトレースと言いましたが、y2log だけでも、大丈夫かもしれません。 # スタックトレースがあれば、あるで有用なんですが
一般的な YaST のバグを報告する方法を書いておきます
1. Bugzilla で既に報告済みではないかをチェック - http://bugzilla.novell.com - 苦労が水の泡にならないように - Bugzilla の検索機能は弱いので、Google 検索も併用すると良いと思います site:opensuse.org で Bugzilla の内容は ML にも転送されているので、ML のログもヒットします。 2. Bugzilla にレポートするときは /var/log/Yast/y2log を添付する - 長いので、必要そうな部分だけ切り出しても OK です - 何か関連するログが残っていないかチェックして、もしあればレポートの本文に書きましょう - LANG=c で YaST を実行しておかないと、相手が日本語が読めずに困ることがあります。
情報ありがとうございます。
https://bugzilla.novell.com/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=openSUSE+12.3&content=YaST2+Software+Manager+segmentation
や
https://www.google.co.jp/search?q=site%3Aopensuse.org+openSUSE+12.3+YaST2+Software+Manager+many+package+SEGV&lr=lang_ja#q=site:opensuse.org+openSUSE+12.3+YaST2+Software+Manager+many+package+SEGV&hl=ja&tbas=0&source=lnt&sa=X&ei=P_4qUZ6LN6rPmgW80YDgCw&ved=0CBoQpwUoAA&bav=on.2,or.r_gc.r_pw.r_qf.&bvm=bv.42768644,d.dGY&fp=abbc894ff9d8fe63&biw=922&bih=770
等を調べてみたのですが、いっぱいヒットするけれども、
私が遭遇している現象とはどれも異なるように見えるので、
reportを出す方向で動きます。
まずは英語環境で現象が再現するかやってみます。
既に同様のreportがあるぞ!お前の目は節穴か!
といったツッコミはお早めに願います。(_ _)
# 武山さんには2通メールを送ってしまうことになります。申し訳ありません。
--
1xx
$BIp;3$G$9(B
$B$A$g$C$H8!:w$7$F$_$^$7$?(B
12.2 $B$N(B YaST (GTK $BHG$G$9$,(B)
- https://bugzilla.novell.com/show_bug.cgi?id=786650
- https://bugzilla.novell.com/show_bug.cgi?id=773049
- https://bugzilla.novell.com/show_bug.cgi?id=779821
12.3 $B$KJQ$($FJs9p$7$?$[$&$,$$$$$+$b$7$l$^$;$s$M!#(B
$B%-!<%o!<%I$O$3$s$J46$8$G$9(B:
https://bugzilla.novell.com/buglist.cgi?short_desc=software%20manager%20crash&resolution=---&resolution=DUPLICATE&query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&bug_status=RESOLVED&short_desc_type=allwordssubstr&component=YaST2
2013$BG/(B2$B7n(B25$BF|(B 15:34 1xx
2013$BG/(B2$B7n(B25$BF|(B 13:37 Fuminobu TAKEYAMA
: $BIp;3$G$9(B
$BK;$7$5$GH?1~$,CY$a$G$9$_$^$;$s(B IRC $B$G%9%?%C%/%H%l!<%9$H8@$$$^$7$?$,!"(By2log $B$@$1$G$b!"Bg>fIW$+$b$7$l$^$;$s!#(B # $B%9%?%C%/%H%l!<%9$,$"$l$P!"$"$k$GM-MQ$J$s$G$9$,(B
$B0lHLE*$J(B YaST $B$N%P%0$rJs9p$9$kJ}K!$r=q$$$F$*$-$^$9(B
1. Bugzilla $B$G4{$KJs9p:Q$_$G$O$J$$$+$r%A%'%C%/(B - http://bugzilla.novell.com - $B6lO+$,?e$NK"$K$J$i$J$$$h$&$K(B - Bugzilla $B$N8!:w5!G=$O
Aw$5$l$F$$$k$N$G!"(BML $B$N%m%0$b%R%C%H$7$^$9!#(B 2. Bugzilla $B$K%l%]!<%H$9$k$H$-$O(B /var/log/Yast/y2log $B$rE:IU$9$k(B - $BD9$$$N$G!"I,MW$=$&$JItJ,$@$1@Z$j=P$7$F$b(B OK $B$G$9(B - $B2?$+4XO"$9$k%m%0$,;D$C$F$$$J$$$+%A%'%C%/$7$F!"$b$7$"$l$P%l%]!<%H$NK\J8$K=q$-$^$7$g$&(B - LANG=c $B$G(B YaST $B$r $B>pJs$"$j$,$H$&$4$6$$$^$9!#(B
https://bugzilla.novell.com/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=openSUSE+12.3&content=YaST2+Software+Manager+segmentation $B$d(B https://www.google.co.jp/search?q=site%3Aopensuse.org+openSUSE+12.3+YaST2+Software+Manager+many+package+SEGV&lr=lang_ja#q=site:opensuse.org+openSUSE+12.3+YaST2+Software+Manager+many+package+SEGV&hl=ja&tbas=0&source=lnt&sa=X&ei=P_4qUZ6LN6rPmgW80YDgCw&ved=0CBoQpwUoAA&bav=on.2,or.r_gc.r_pw.r_qf.&bvm=bv.42768644,d.dGY&fp=abbc894ff9d8fe63&biw=922&bih=770 $BEy$rD4$Y$F$_$?$N$G$9$,!"$$$C$Q$$%R%C%H$9$k$1$l$I$b!"(B $B;d$,Ax6x$7$F$$$k8=>]$H$O$I$l$b0[$J$k$h$&$K8+$($k$N$G!"(B report$B$r=P$9J}8~$GF0$-$^$9!#(B
$B$^$:$O1Q8l4D6-$G8=>]$,:F8=$9$k$+$d$C$F$_$^$9!#(B
$B4{$KF1MM$N(Breport$B$,$"$k$>(B!$B$*A0$NL\$O@a7j$+(B! $B$H$$$C$?%D%C%3%_$O$*Aa$a$K4j$$$^$9!#(B(_ _)
# $BIp;3$5$s$K$O(B2$BDL%a!<%k$rAw$C$F$7$^$&$3$H$K$J$j$^$9!#?=$7Lu$"$j$^$;$s!#(B
-- 1xx
https://twitter.com/ItSANgo http://d.hatena.ne.jp/Itisango/ N�����r��y隊Z)z{.�����칻�&ޢ��������'��-���w�zf���^�ˬz6�� ޮ�^�ˬz��
とりあえず y2log, signal, GDBのbacktrace,
落ちる間際に端末に出力されたログをつけてbug reportを書きました。
https://bugzilla.novell.com/show_bug.cgi?id=805731
こんなんでよかったんでしょうか?
--
1xx
武山です OKです。お疲れ様です。 一応、先ほどのメールに書いておいたバグ ID を書いておきました。 原因が分かって、同じだった場合に既存の方も close できますので。 (2013/02/25 21:32), 1xx wrote:
とりあえず y2log, signal, GDBのbacktrace, 落ちる間際に端末に出力されたログをつけてbug reportを書きました。
https://bugzilla.novell.com/show_bug.cgi?id=805731
こんなんでよかったんでしょうか?
-- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org
reportのpriorityが決まりました。
P3 - Mediumだそうです。
--------
Date: Tue, 26 Feb 2013 15:16:05 +0000
Subject: [Bug 805731] [libyui-qtk-pkg] YaST2 Software Manager crashes
by a violation of segmentation when I choose many packages in a
hurry.
----
https://bugzilla.novell.com/show_bug.cgi?id=805731
https://bugzilla.novell.com/show_bug.cgi?id=805731#c
Thomas Göttlicher
2013年2月25日 12:14 1xx
* sudo chmod o+w /var/crash で /var/crashのパーミッションが drwxr-xrwx に変わるか? 2013-02-25 OK
考えてみたら、このパーミッションだと、どのユーザでも
このディレクトリのファイルを消すことができて危険ですね。
sudo chmod 1777 /var/crash で drwxrwxrwt に変更しました。
--
1xx
participants (3)
-
1xx
-
Fuminobu TAKEYAMA
-
Yasuhiko Kamata