On Mon, Sep 29, 2008 at 04:11:41PM -0700, Bill Stouder-Studenmund wrote: > On Mon, Sep 29, 2008 at 08:47:56PM +0200, Manuel Bouyer wrote: > > On Mon, Sep 29, 2008 at 11:27:56AM -0700, Bill Stouder-Studenmund wrote: > > > How much of a pain would it be to get me this firefox and needed pkgs? > > > > I can do a tar of /usr and /lib of this box; but I can't make it available > > for ftp before tomorow morning (MET). My DSL upload is only 128kb/s. > > > > Sure, I'll send you a .tgz, with the output of ktrace, and the > > associated kdump result (to not spam the list with a 1.1MB attachement). > > Ok, I'll look at this more tonight. Just from skimming the three logs you > sent me off-list, I see the crash looks something like this: > > 476 2 firefox-bin CALL getcontext(0xb87ff918) > 476 2 firefox-bin RET getcontext 0 > 476 3 firefox-bin SAU blocked, event=[<ctx=0xb87ffcf8, id=3, cpu=0>] > 476 4 firefox-bin SAU blocked, event=[<ctx=0xb89ffcf8, id=4, cpu=0>] > 476 4 firefox-bin CALL sa_yield > 476 4 firefox-bin SAU unblocked, event=[<ctx=0xb89ffcf8, id4, > cpu=0>, <ctx=0xbfbfdc80, id=2, cpu=0>], intr=[<ctx=0xb87ff9b0, id=3, cpu=0>] > 476 4 firefox-bin RET sa_yield JUSTRETURN > 476 4 firefox-bin CALL write(2,0xb87ff864,0xa7) > > In two of the crashes, the second "event" context is one that has NEVER > blocked (at least in the ktrace info), and in the other one it is one that > unblocked recently. So the problem is somewhere in the "second and later" > upcall specification code. :-) I forgot to mention that this was the first time that two unblocked upcalls were ever delivered at once in the log. Thus my belief that it's the issue. Unfortunately I can't see anything substative that looks different about how they're handled. It could be a typo I missed... Unfortunately the test case I wrote doesn't work right. I tried creating a set of pipes and having three threads select on different ones. There was thread 1, 2, and 4, and pipes 1 -> 7. Each thread read-selected the pipes whose number intersected the thread number. So thread 1 selected all the odd-numbered ones, thread 2 "2, 3, 6, 7" and so on. The idea was one main thread could write something to a pipe, say pipe 7, and multiple threads in select would get woken at once, resulting in multiple unblocked upcalls getting delivered at once. Sadly, I get three unblocked events in a row, not one event with multiple targets. Both under 4.0 UP and 5.0 SMP. Anyone have any thoughts on how to get multiple threads to unblock very rapidly? Take care, Bill
Attachment:
pgp9K7Nc_JZrS.pgp
Description: PGP signature