firefox35

昨日テレビに出てきた、アラフォー近くの激太りのあの人を見て、びっくりした。 本人の弁によれば、単なる食べ過ぎとの事であるが、うるさい週刊誌がホっておく はずは無い。

それともう一つ、ビューティーコロシアムもホっておくはずは無い。使用前、使用後 が、誰の目にもはっきりするんだから、こんな効果のある広告は無いだろう。 今から、女房は楽しみにしております。(決して、私ではありませんからね。 そこんところ、間違い無き用)

私は、こちらの激痩せに期待しますだ。

firefox 3.5

  1. HTML5をサポート
  2. スピードアップ
  3. 使うメモリーが少なくなった 等々

などの特徴があるとの事。HTML5は、余り興味がないけど、メモリーが少なくなる のは、非常にありがたい。早速入れてみた。

firefox35 on FreeBSD

HTML5の準備のため、周辺のアプリが大量にインストールされた。audio関係、video関係 と、それ繋がりで、fftwまでもが。それが、終ると、セキュリティー関係の更新。

そして、やっと本体の作成にかかってくれた。kernelよりもずっと巨大なアプリだから、結構疲れる。(疲れるのは、HDDだからいいけど。確実に寿命を縮めるなあ)

firefox 3.1とは、同居出来ないので、古い方を消してからインストール。

さて、起動するぞ

[sakae@fb ~]$ firefox3
Fatal error 'Recurse on a private mutex.' at line 986 in file /usr/src/lib/libpthread/thread/thr_mutex.c (errno = 2)
Abort trap (core dumped)

落ちちゃったよ。

[sakae@fb ~]$ vi +986 /usr/src/lib/libpthread/thread/thr_mutex.c
 ......
static inline int
mutex_self_lock(struct pthread *curthread, pthread_mutex_t m)
{
        int ret = 0;

        /*
         * Don't allow evil recursive mutexes for private use
         * in libc and libpthread.
         */
        if (m->m_flags & MUTEX_FLAGS_PRIVATE)
                PANIC("Recurse on a private mutex.");

再帰はだめよって言われても、おいらは、当たり前のように再帰を使っているから なあ。こう、あからさまに嫌わんでも...

こういう時は、注意書きが無いか、探してみます。

[sakae@fb ~]$ lv /usr/ports/UPDATING
  .....
20090628:
  AFFECTS: users of www/firefox3-devel
  AUTHOR: gecko@FreeBSD.org

  If your Firefox crashes with the following message while viewing a
  HTML5 page: "Bad system call (core dumped)" you need to load the sem
  module (kldload sem).

  To load sem on every boot put the following into your
  /boot/loader.conf: sem_load="YES"

こんなのが有ったけど、関係なさそう。はて、どうする。困った時の2ch、と言う 事で行ってみたけど、同じエラーが出て悩んでいる人がいました。人柱バージョンだった のかしらん。何とかせねば。

で、考えたのが、pthreadだからまずいんでないかい? 違うライブを使えば、ひょっとして、再帰嫌いの人が書いているかも知れないな。

再起編

その方針で、探してみると、

NAME
     libmap.conf -- configuration file for dynamic object dependency mapping

DESCRIPTION
     The libmap functionality of ld-elf.so.1(1) allows dynamic object depen-
     dencies to be mapped to arbitrary names.

     The configuration file consists of two whitespace separated columns; the
     left hand side containing the mapping candidate and the right hand side
     containing the mapping.  Dependencies are matched against candidates and
     replaced with the mappings.

なんてのが有り、これの例として

[sakae@fb ~]$ cat /etc/libmap.conf
# Remap 5.x and 6.x libpthread to libthr
libpthread.so.1        libthr.so.1
libpthread.so.2        libthr.so.2

こんなのが見つかった。やっぱり、スクリプトだと、ちょいとデータをスゲ変える なんて事が簡単に出来ちゃうのね。

起動したら、動いたよ。ただ、たまに落ちる。落ちても再起してくれるからいいけど。 やっぱり人柱。

死人が出れば、そこには臨場の人達が集まってきます。(科研の女でもいいけど)

[sakae@fb ~]$ gdb /usr/local/lib/firefox3/firefox-bin firefox-bin.core
Core was generated by `firefox-bin'.
Program terminated with signal 11, Segmentation fault.
(gdb) bt
#0  0x35deadff in kill () from /lib/libc.so.6
#1  0x35dead9c in raise () from /lib/libc.so.6
#2  0x34327f0f in nsProfileLock::FatalSignalHandler ()
   from /usr/local/lib/firefox3/libxul.so
#3  <signal handler called>
#4  0x353419a1 in js_ConcatStrings () from /usr/local/lib/firefox3/libmozjs.so
#5  0x36c21bc0 in ?? ()
#6  0x00000000 in ?? ()
#7  0x00000000 in ?? ()
#8  0x404f0000 in ?? ()
#9  0x0977804c in ?? ()
#10 0xbfbfa998 in ?? ()
#11 0x00000000 in ?? ()
#12 0x40418000 in ?? ()
#13 0x00000000 in ?? ()
#14 0x40000000 in ?? ()
#15 0xbfbfba4c in ?? ()
#16 0x36b91da0 in ?? ()
#17 0x08f8a000 in ?? ()
#18 0x36b91d80 in ?? ()
#19 0xbfbfa9b0 in ?? ()
#20 0x0000003e in ?? ()
#21 0xbfbfbb8c in ?? ()
#22 0x00000089 in ?? ()
#23 0xbfbfdb58 in ?? ()
#24 0xbfbfdb58 in ?? ()
#25 0x35385800 in ?? () from /usr/local/lib/firefox3/libmozjs.so
#26 0x36c219d6 in ?? ()
#27 0xbfbfa9b0 in ?? ()
#28 0x35358c56 in TraceRecorder::hasIteratorMethod ()
   from /usr/local/lib/firefox3/libmozjs.so
Previous frame inner to this frame (corrupt stack?)

青島です。第二の殺人事件が起きないように、JavaScriptを封鎖してください。 場合によっては、とっても不便になるかも知れませんが、予防の為の処置です。

他殺である事は判明しました。憶測で物を言ってはいけませんが、今までの経験上 土地分譲のもつれから、事件が起きたものと思われます。無茶な要求を突き付け られて、大家さんがばっさりやった確率がかなりあると思います。

これ以上の調査は、Debug Hacksを書いた、ミラクルチームにお願いするか、 身元引き受け人の gecko@FreeBSD.org へ、send-pr するしかないと思います。 現場から、coreを運び出すのは、サイズの関係で難しいと思われますので、 リモート検視をお願いします。

この際ですから、JavaScriptの変わりにGaucheを内蔵しちゃったらどうだろう! 内部は HTMLを主に扱うんだから、S式の方がずっと簡単だし、分けのわからない○○もどき を扱うより、よっぽどすっきりすると思うんだけどなあ。明日のShibuya.lisp#3 で、 shiroさんに提案してみようかしらん。

明日の宴会を皮切りに、今月は飲み会が多いなぁ。激太りに注意せねば。