blob: 6c5d40511f4b96453370c5de07eaaac557ad5d60 [file] [log] [blame]
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
void foo (void);
void bar (void);
void superroutine1 (int);
void superroutine2 (int);
void subroutine1 (int);
void subroutine2 (int);
void subroutine3 (int);
void subroutine4 (int);
void subroutine5 (int);
void subroutine6 (int);
void handler (int);
main ()
{
int c = 0;
puts ("Starting up");
foo ();
puts ("Waiting to get a signal");
superroutine1 (10);
puts ("Shutting down");
}
void
foo (void)
{
puts ("hi in foo");
}
void
bar (void)
{
char *nuller = 0;
puts ("hi in bar");
*nuller = 'a'; /* try to cause a segfault */
}
void
handler (int sig)
{
subroutine1 (sig);
}
void
superroutine1 (int in)
{
superroutine2 (in + 5);
}
void
superroutine2 (int in)
{
signal (SIGALRM, handler);
alarm (1);
while (1)
in++;
}
void
subroutine1 (int in)
{
subroutine2 (in + 5);
}
void
subroutine2 (int in)
{
subroutine3 (in + 5);
}
void
subroutine3 (int in)
{
subroutine4 (in + 5);
}
void
subroutine4 (int in)
{
subroutine5 (in + 5);
}
void
subroutine5 (int in)
{
subroutine6 (in + 5);
}
void
subroutine6 (int in)
{
int c = 10;
in += c; /* This is a good place for a breakpoint */
while (in < 1000)
in++;
}