truss issue
Maxim Konovalov
maxim at macomnet.ru
Mon Dec 15 04:35:34 PST 2003
Hello,
On Mon, 16 Jun 2003, 23:40+0900, Alexander Nedotsukov wrote:
> All,
>
> I found current truss behaviour a bit strange. It coredumps always if
> trussed process do without any significant reason for my understanding.
> I also confused with comment for commit originally introduced this
> functionality
> http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/truss/main.c.diff?r1=1.9&r2=1.10.
> I propose patch attached to make truss always return result of trussed
> process and do not kill() itself. What do you think about it?
As a matter of fact, bin/58970 is a backout of rev.1.10 truss/main.c:
----------------------------
revision 1.10
date: 1998/08/24 10:17:20; author: cracauer; state: Exp; lines: +9 -1
When exiting on SIGINT, exit with signal status
=============================================================================
But a code does not match the comment and does something funny:
@@ -216,6 +217,7 @@
break;
case S_SIG:
fprintf(outfile, "SIGNAL %lu\n", pfs.val);
+ sigexit = pfs.val;
break;
case S_EXIT:
fprintf (outfile, "process exit, rval = %lu\n", pfs.val);
@@ -232,5 +234,11 @@
if (ioctl(Procfd, PIOCCONT, val) == -1)
warn("PIOCCONT");
} while (pfs.why != S_EXIT);
+ if (sigexit) {
+ if (sigexit == SIGQUIT)
+ exit(sigexit);
+ (void) signal(sigexit, SIG_DFL);
+ (void) kill(getpid(), sigexit);
+ }
return 0;
}
Gentlemen, does anobody know what is going on there?
--
Maxim Konovalov, maxim at macomnet.ru, maxim at FreeBSD.org
More information about the freebsd-current
mailing list