out. Instead, print a warning message, continue, and cause any
attempt to trace into a child process to fail with ECHILD.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4861
changes from r4341 through r4787 inclusive). That branch is now dead.
Please do not commit anything else to it.
For the most part the merge was not troublesome. The main areas of
uncertainty are:
- build system: I had to import by hand Makefile.core-AM_CPPFLAGS.am
and include it in a couple of places. Building etc seems to still
work, but I haven't tried building the documentation.
- syscall wrappers: Following analysis by Greg & Nick, a whole lot of
stuff was moved from -generic to -linux after the branch was created.
I think that is satisfactorily glued back together now.
- Regtests: although this appears to work, no .out files appear, which
is strange, and makes it hard to diagnose regtest failures. In
particular memcheck/tests/x86/scalar.stderr.exp remains in a
conflicted state.
- amd64 is broken (slightly), and ppc32 will be unbuildable. I'll
attend to the former shortly.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4789
Also reinstated SF_DEVICE, which is used to ensure we don't try and
leakcheck a page that is mapped from a device. This got lost in the
2.x-to-3.x transition, or some time after.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4538
EPOLL_CTL_DEL invocation.
Also renamed our "struct epoll_event" to "struct vki_epoll_event" as it
should be called.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4014
not really from the kernel and they're defined in terms of VG_(max_signal),
which is in m_signals. Renamed them with the VG_ prefix too, since they're
now not part of the kernel interface.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3990
Plenty still to do, but simple programs like ls seem to run ok
Thanks, Paul, for having your ppc port of valgrind 2.4 to work from!
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3969
been a concept of a 'master thread'. This is the first thread in the
process. There was special logic which kept the master thread alive
artificially should it attempt to exit before its children. So the
master would wait for all children to exit and then exit itself, in
the process emitting the final summary of errors, leaks, etc.
This has the advantage that any process waiting on this one will see
the final summaries appearing before its sys_wait call returns. In
other words, the final summary output is synchronous with the
master-thread exiting.
Unfortunately the master-thread idea has a serious drawback, namely
that it can and sometimes does cause threaded programs to deadlock at
exit. It introduces an artificial dependency which is that the master
thread cannot really exit until all its children have exited. If --
by any means at all -- the children are waiting for the master to exit
before exiting themselves, deadlock results. There are now two known
examples of such deadlocks.
This commit removes the master thread concept and lets threads exit in
the order which they would have exited without Valgrind's involvement.
The last thread to exit prints the final summaries. This has the
disadvantage that final output may appear arbitrarily later relative
to the exit of the initial thread. Whether this is a problem in
practice remains to be seen.
As a minor side effect of this change, some functions have had
_NORETURN added to their names. Such functions do not return. The
thread in which they execute is guaranteed to exit before they return.
This makes the logic somewhat easier to follow.
amd64 compilation is now broken. I will fix it shortly.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3816
- All the subdirectories have gone: arm/, x86/, amd64/, linux/,
x86-linux/, amd64-linux/, arm-linux/.
- The following files were moved out of those directories into include/:
amd64-linux/vki_arch.h --> vki-amd64-linux.h
x86-linux/vki_arch.h --> vki-x86-linux.h
x86-linux/vki_arch_posixtypes.h --> vki_posixtypes-x86-linux.h
linux/vki.h --> vki-linux.h
amd64-linux/vki_arch_posixtypes.h --> vki_posixtypes-amd64-linux.h
- The following very small files were inlined into tool.h using the "#if
defined(VGP_x86)..." technique:
x86/tool_arch.h
arm/tool_arch.h
amd64/tool_arch.h
The same technique was used twice to include the appropriate
vki-$PLATFORM and vki-$OS files into tool.h.
- The other files in those directories were removed.
- The build is much simpler, since we have 7(!) fewer Makefile.am files.
Far fewer -I options are needed when compiling, too.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3733