From: Philippe Waroquiers Date: Sun, 25 Jun 2017 20:25:50 +0000 (+0000) Subject: After fork, vgdb activity is polled according to the nr of bbs done : X-Git-Tag: VALGRIND_3_14_0~317 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2436a4ad6fee6aeb210384784162c3a8a3303cbb;p=thirdparty%2Fvalgrind.git After fork, vgdb activity is polled according to the nr of bbs done : once the nr of bbs done reaches the next vgdb poll, a check for vgdb activity is done. This might lead to the activation of gdbserver after fork. Such poll is however not expected, unless the children is to be trace. This spurious poll in the forked child can cause failures depending on the nr of bbs done before the fork, and the nr of bbs done between the fork and the exec. => disable vgdb poll in the child in the cleanup after fork in the child, unless the children have to be traced. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16454 --- diff --git a/coregrind/m_gdbserver/m_gdbserver.c b/coregrind/m_gdbserver/m_gdbserver.c index 87fbce205c..648d543609 100644 --- a/coregrind/m_gdbserver/m_gdbserver.c +++ b/coregrind/m_gdbserver/m_gdbserver.c @@ -646,6 +646,10 @@ static void gdbserver_cleanup_in_child_after_fork(ThreadId me) if (VG_(clo_trace_children)) { VG_(gdbserver_prerun_action) (me); + } else { + /* After fork, if we do not trace the children, disable vgdb + poll to avoid gdbserver being called unexpectedly. */ + VG_(disable_vgdb_poll) (); } }