[CRIU] crash when restoring with current git master?

Tycho Andersen tycho.andersen at canonical.com
Thu Jun 4 15:29:25 PDT 2015


On Thu, Jun 04, 2015 at 11:54:54PM +0300, Pavel Emelyanov wrote:

> >>> +
> >>> +err:
> >>> +	futex_abort_and_wake(&task_entries->nr_in_progress);
> >>> +	return -1;
> >>>  }
> >>
> >> But this thing has never been here. Instead, when child gets an error is
> >> exits and then the sigchld_handler() runs and does futex_abort_and_wake().
> >> Why hasn't this logic worked this time?
> > 
> > I just got around to looking at this again, and I'm seeing:
> > 
> > ShdPnd: 0000000000010000
> > SigBlk: fffffffe7ffbfeff
> > 
> > in the parent of the process that died. If my math is right that's the
> > 17th bit, which is SIGCHLD. I don't know enough about why that
> > wouldn't get delivered, though, given SigBlk.
> 
> Yes, the SIGCHLD is pending and is blocked too.

Oh, whoops, yes, the mask goes the other way. Sorry about that :)

> When restore starts CRIU,
> before forking the root, blocks all signals but sigchild (criu_signals_setup).
> Maybe SIGCHILD was blocked _before_ CRIU started and this block got inherited?

I just checked and it doesn't look like it (nothing is blocked when
exec()ing criu or just after criu gets exec'd). I'll poke around and
see what I can figure out.

Tycho


More information about the CRIU mailing list