On Mon, 02 Dec 2013 11:56:33 +0100, Mark Wielaard wrote: > Aha. OK. Maybe you could try to force a SIGSEGV in a function with as > first instruction something like "*(int *) 0x1234 = 0x12345;" though I > assume that might still move the pc just past this instruction. So just > keep it as is.
One could define such function in asm() block to prevent any prologue. But you are right I am not sure if current or future processors really stop at the first such instruction. > You did now document this in backtrace-child. But it would not be a bad > idea to add a little comment to backtrace.c (prepare_thread) to explain > the intent. It is kind of tricky. I have put there the block: /* On x86_64 only: PC will get changed to function 'jmp' by backtrace.c function prepare_thread. Then SIGUSR2 will be signalled to backtrace-child which will invoke function sigusr2. This is all done so that signal interrupts execution of the very first instruction of a function. Properly handled unwind should not slip into the previous unrelated function. */ > Yeah, OK. But if the generation of the core file fails you might want to > note that separately (or even just SKIP the test). It still FAILs then but one can figure out it from the tests/*.sh.log file. Thanks, Jan