"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: sparc64 regress ulimit
To:
Christian Weisgerber <naddy@mips.inka.de>, gameoftrees@openbsd.org
Date:
Sun, 22 Jan 2023 14:01:08 +0100

Download raw body.

Thread
On Sat, Jan 21, 2023 at 07:15:56AM -0700, Tracey Emery wrote:
> On Fri, Jan 20, 2023 at 11:17:49PM +0100, Stefan Sperling wrote:
> > 
> > Please run the test with this patch applied.
> > The 'got checkout' process should spin when it happens and you should
> > be able to get its list of open files with fstat -p $PID
> > 
> > diff /home/stsp/src/got
> > commit - 7713cc5e4f5544e81909670d592e89526ed86c9b
> > path + /home/stsp/src/got
> > blob - 7e698531e6e75bd34bc4b2f0c280aded67f43de0
> > file + lib/error.c
> > --- lib/error.c
> > +++ lib/error.c
> > @@ -254,6 +254,10 @@ got_error(int code)
> >  {
> >  	size_t i;
> >  
> > +	if (code == GOT_ERR_PRIVSEP_NO_FD) {
> > +		fprintf(stderr, "%s: no more privsep fds; spinning...\n", __func__);
> > +		for (;;) sleep(1);
> > +	}
> >  	for (i = 0; i < nitems(got_errors); i++) {
> >  		if (code == got_errors[i].code)
> >  			return &got_errors[i];
> > 
> 
> Huh! I had a bit of time to run the tests this morning. Afk for the rest
> of the weekend. Have a good one.

This is less than 32 open file descriptors, which suggests the
problem is somewhere else. It could be that the process on other
end of a pipe has crashed, for example.

Could you run this again with the same diff and instead of running fstat -p,
could you attach to the spinning process with gdb and show the backtrace?

  pkg_add gdb
  egdb ~/bin/got (or ~/bin/got-read-pack etc.)
  attach $PID-of-process-which-printed-the-error
  bt