[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-ultrasparc
Subject:    Re: Address that caused sigsegv
From:       Michiel Boland <boland () diva ! nl>
Date:       1999-04-14 10:13:53
[Download RAW message or body]

> * Is it impossible to get the address that caused the SIGSEGV or does
>   new_setup_frame32() write this information to the stack frame?

Judging by the source, it doesn't.

> * Why does tss.new_signal exist, is setup_frame32() obsolete?

No idea why it exists. This is from sys32_sigaction():

	if(sig < 0) {
		current->tss.new_signal = 1;         
		sig = -sig;
	}

Since you say that new_signal is always nonzero (how do you check that?),
my guess is that there is some hacking going on in libc.

The setup_frame32 function *does* put the faulting address on the stack,
but I guess you will have to hack around libc in order to get it to
work.

This is of course going to be extreeeeeeeemely unportable so I would
advise to just let your app dump core and not install a handler for 
SIGSEGV.

Cheers
Michiel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic