signal handler stack. again

Hi,

I wrote simple test:

void sighandler(int signo);

int main(int argc, char**){
int i, *x = &argc;
signal(SIGSEGV, sighandler);
for (i=0;;i++,x–){
printf ("%d %x\n", i, *x);
}
}

void sighandler(int signo){
fprintf(stderr,“SIGSEGV. stack:%p\n”, &signo);
// now - exit, but in another cases I couls want to restore
exit(signo);
}


And i see, signal handler stack is in the middle of my stack!!!
It can break data in the stack !!!

Q1: which is algorithm of signal handler ESP computation ?

Q2: how can I set signal stack in QNX6 (such as sigaltstack(…) call in some
UNIXes)

vasa