tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: firefox crash, was Re: Status of revivesa



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



Home | Main Index | Thread Index | Old Index