Re: Firefox hangs in state 'kqread'

看板DFBSD_bugs作者時間21年前 (2005/03/21 03:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串24/27 (看更多)
:Hello, : :I have finally come to the conclusion that the problem was introduced between :January 30th and February 1st, somewhere in libc_r. : :When I replace, on a latest -CURRENT world and kernel, /usr/lib/libc_r.so.4 by :an older version dating from 01/30, the hangs disappear. :.. : :Regards, : :Laurent This date range encompasses the first major threading commit for libc. I went through the code and one thing stuck out... actually two things stuck out. _kevent() and _flock(). /usr/src/lib/libc/net/res_send.c appears to call _kevent() when I believe it should be calling kevent(). and /usr/src/lib/libc/yp/yplib.c calls _flock() when I believe it should be calling flock(). David or Joerg... could you check out the use of kevent in net/res_send.c ? I compiled a simple program which called res_send() -g -pthread -static and objdump -d'd the result. res_send() appears to call __sys_kevent() directly and does not appear to running through libc_r's version of kevent(). Laurent, could you please try this patch, and then recompile and reinstall your libc_r ? -Matt Matthew Dillon <dillon@backplane.com> Index: net/res_send.c =================================================================== RCS file: /cvs/src/lib/libc/net/res_send.c,v retrieving revision 1.4 diff -u -r1.4 res_send.c --- net/res_send.c 31 Jan 2005 22:29:33 -0000 1.4 +++ net/res_send.c 20 Mar 2005 18:37:38 -0000 @@ -728,7 +728,7 @@ EV_SET(&kv, s, EVFILT_READ, EV_ADD | EV_ONESHOT, 0,0,0); - n = _kevent(kq, &kv, 1, &kv, 1, &ts); + n = kevent(kq, &kv, 1, &kv, 1, &ts); if (n < 0) { if (errno == EINTR) { (void) gettimeofday(&ctv, NULL);
文章代碼(AID): #12FSXs00 (DFBSD_bugs)
討論串 (同標題文章)
文章代碼(AID): #12FSXs00 (DFBSD_bugs)