Josef Weidendorfer 8138daf9d7 Fix handling of multiple signal deliveries in a row
This fixes bug 136154.

Background:
The function stack - CLG_(current_fn_stack) - is a stack of
pointers to the fn_node structs of the currently active
functions. This stack is used for determining current context
from call chain to current function, and modified on entering
(via push_cxt) and leaving a function.
Entering a signal handler will push a 0 to the function stack
to make the context only dependend on the call chain inside of
the signal handler.
Thus, delivering two signals in a row should push two times a
0 value onto the function stack. However, the second 0-push was
incorrectly suppressed, leading to a failed assertion when
returning from the 2nd signal handler.

This also fixes a bug with incorrectly zeroing global cost
counters when changing the execution context, introduced with
r10386.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10399
2009-07-01 23:56:23 +00:00
..
2009-03-10 22:02:09 +00:00
2009-03-10 22:02:09 +00:00
2009-03-10 22:02:09 +00:00
2006-03-20 10:27:30 +00:00
2009-07-01 08:10:49 +00:00