bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

rpctrace on a statically linked executable


From: Brent W. Baccala
Subject: rpctrace on a statically linked executable
Date: Mon, 5 Mar 2018 22:03:35 -0500

Hi -

I'm confused by rpctrace's behavior on a statically linked test program.  Here's the program:

#include <stdio.h>

int main(int argc, char *argv[])
{
  printf("Hello world!\n");
}

Perhaps you've seen it before :-)

When I compile the program with -static, I get an executable that works fine, but can't be traced:

root@qemu-hurd:~# rpctrace ./hello-world
task134(pid8538)->vm_statistics () = 0 {4096 462739 56607 206740 23868 12642497 0 424184 481063 142824515 37245163 15804468 15747574}
Child 8538 Killed

A little more digging shows that the program is receiving an exception after the vm_statistics call.  It happens very early, before the C library has set up an exception handler, so the exception goes to rpctrace itself, but some code fiddling inside rpctrace shows it:

root@qemu-hurd:~# ./rpctrace ./hello-world
135(task134)-->134(task-1)->vm_statistics () = 0 {4096 462739 56536 206804 23868 12643374 0 424194 481436 142836984 37247781 15804960 15748056}
136(task-1)-->121(task1)->exception_raise (   142<--144(pid8561)    134<--145(pid8561) 1 2 20) = 0x40000001 (Operation not permitted) 
Child 8562 Killed

I'm stumped.  Any idea why tracing a statically linked program will throw an exception so early, and only when being traced?

    agape
    brent


reply via email to

[Prev in Thread] Current Thread [Next in Thread]