Hi,

I am writing a tool that is trying to execute an arbitrary function in
the client and report the program state immediately after finishing.
I have been able to get the client to jump to the function I want and
execute.  However to get that to work, I have registered a function
via VG_(track_pre_thread_ll_create) that calls VG_(fork), after which
only the child process continues to execute the client code.  The
parent waits on the child to exit via VG_(waitpid), and reads the
program state reported by the child on a pipe.  The parent then waits
for an external process to issue the command to execute the same
function again.  If the forks and the child runs the same function,
the child process hangs while trying to acquire the BigLock.  I was
able to solve the issue by having my child manually call
VG_(release_BigLock_LL)(NULL) before VG_(exit)().

This seems like a bug, as I would assume the VG_(exit) would release
any held locks, however I am not sure if there is a reason for not
doing this.  If it is a bug, I would be happy to make a bug report for
this, along with a minimal example.


-- 
Derrick McKee
Phone: (703) 957-9362
Email: derrick.mc...@gmail.com


_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to