When the child process has been killed by SIGINT, AbstractEbuildProcess can detect this and avoid reporting an unexpected exit in this case.
Actually the code already checks if the child was killed by a signal here:
> if self.returncode < 0:
> if not self.cancelled:
So, maybe sandbox it hiding the signal, since relevant output looks like this:
> ^Csandbox:stop caught signal 2 in pid 16582
> * The ebuild phase 'prepare' has exited unexpectedly. This type of
> * behavior is known to be triggered by things such as failed variable
> * assignments (bug #190128) or bad substitution errors (bug #200313).
> * Normally, before exiting, bash should have displayed an error message
> * above. If bash did not produce an error message above, it's possible
> * that the ebuild has called `exit` when it should have called `die`
> * instead. This behavior may also be triggered by a corrupt bash binary or
> * a hardware problem such as memory or cpu malfunction. If the problem is
> * not reproducible or it appears to occur randomly, then it is likely to
> * be triggered by a hardware problem. If you suspect a hardware problem
> * then you should try some basic hardware diagnostics such as memtest.
> * Please do not report this as a bug unless it is consistently
> * reproducible and you are sure that your bash binary and hardware are
> * functioning properly.
The signal is intended to pass through sandbox, since this commit: