Dimitris Papastamos wrote:
> On Mon, Jun 13, 2016 at 08:42:35AM -0700, Philip Guenther wrote:
> > On Sun, 12 Jun 2016, Dimitris Papastamos wrote:
> > > I was building ports and at the same time started chromium and the 
> > > kernel panic-ed.
> > > 
> > > This has happened a few times in the last week.  It started happening at 
> > > some point towards the end of May.  It is not easy to reproduce locally.
> > 
> > Thank you for the report!  When you say "not easy to reproduce locally", 
> > do you mean you _can_ semireliably reproduce it, such that if we found a 
> > suspicious commit to revert you would be able to be pretty sure whether it 
> > was really fixed?  If so, what's your best guess on how to tickle it?
> 
> Hi,
> 
> I had a look at this.  I am currently exploring the possibility that
> the crash could be due to this patch from May 26th 2016:
> 
> "Make amaps use less kernel memory (2nd try)"
> 
> Not verified this yet in any way, just thought I would post early in
> case anyone has any ideas.

It looks unrelated. Even with reverting the amap diff the unp_gc panic
occured here.
 
> I also reviewed the patch from Aug 28th 2015:
> 
> "Rework the UNIX domain socket garbage collector, including ideas from 
> {Free,Net}BSD"
> 
> but I did not see an issue with it.  In the trace that I posted it
> seems to crash on line 905 in unp_gc() in sys/kern/uipc_usrreq.c:
> 
>    899          /* close any fds on the deferred list */
>    900          while ((defer = SLIST_FIRST(&unp_deferred)) != NULL) {
>    901                  SLIST_REMOVE_HEAD(&unp_deferred, ud_link);
>    902                  for (i = 0; i < defer->ud_n; i++) {
>    903                          memcpy(&fp, &((struct file **)(defer + 1))[i],
>    904                              sizeof(fp));
>    905                          FREF(fp); <-- here
>    906                          if ((unp = fptounp(fp)) != NULL)
>    907                                  unp->unp_msgcount--;
>    908                          unp_rights--;
>    909                          (void) closef(fp, NULL);
>    910                  }
>    911                  free(defer, M_TEMP, sizeof(*defer) + sizeof(fp) * 
> defer->ud_n);
>    912          }
> 
> The address that it crashes on seems to be aligned and not fiddled
> with.  So I suspect memory was unmapped and later on triggered a uvm
> fault when accessed via FREF().
> 

Reply via email to