mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-13 05:28:49 +00:00
Print stack trace when execting due to fatal problem or bug
darcs-hash:20070121150341-ac50b-66b86014963568bf402a76d5beb7c1d4e188c5f7.gz
This commit is contained in:
parent
66c045c439
commit
98a6c491b1
5 changed files with 19 additions and 12 deletions
2
common.c
2
common.c
|
@ -704,7 +704,7 @@ wchar_t *escape( const wchar_t *in,
|
|||
if( !in )
|
||||
{
|
||||
debug( 0, L"%s called with null input", __func__ );
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
}
|
||||
|
||||
out = malloc( sizeof(wchar_t)*(wcslen(in)*4 + 1));
|
||||
|
|
6
common.h
6
common.h
|
@ -91,9 +91,9 @@ extern wchar_t *program_name;
|
|||
}
|
||||
|
||||
/**
|
||||
Cause fish to crash. If supported, print a backtrace first.
|
||||
Pause for input, then exit the program. If supported, print a backtrace first.
|
||||
*/
|
||||
#define CRASH() \
|
||||
#define FATAL_EXIT() \
|
||||
{ \
|
||||
char c; \
|
||||
show_stackframe(); \
|
||||
|
@ -111,7 +111,7 @@ extern wchar_t *program_name;
|
|||
L"fish: Out of memory on line %d of file %s, shutting down fish\n", \
|
||||
__LINE__, \
|
||||
__FILE__ ); \
|
||||
CRASH(); \
|
||||
FATAL_EXIT(); \
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
6
exec.c
6
exec.c
|
@ -220,7 +220,7 @@ void free_fd( io_data_t *io, int fd )
|
|||
FD_ERROR,
|
||||
fd );
|
||||
wperror( L"dup" );
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -515,7 +515,7 @@ static void launch_process( process_t *p )
|
|||
errno = err;
|
||||
|
||||
wperror( L"execve" );
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
}
|
||||
|
||||
|
||||
|
@ -761,7 +761,7 @@ static pid_t exec_fork()
|
|||
|
||||
debug( 0, FORK_ERROR );
|
||||
wperror (L"fork");
|
||||
exit( 1 );
|
||||
FATAL_EXIT();
|
||||
}
|
||||
|
||||
|
||||
|
|
2
parser.c
2
parser.c
|
@ -2588,7 +2588,7 @@ int eval( const wchar_t *cmd, io_data_t *io, int block_type )
|
|||
debug( 0,
|
||||
_(L"End of block mismatch. Program terminating.") );
|
||||
bugreport();
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
15
signal.c
15
signal.c
|
@ -557,7 +557,7 @@ void signal_set_handlers()
|
|||
if( sigaction( SIGINT, &act, 0) )
|
||||
{
|
||||
wperror( L"sigaction" );
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
}
|
||||
|
||||
act.sa_sigaction = &handle_chld;
|
||||
|
@ -565,7 +565,7 @@ void signal_set_handlers()
|
|||
if( sigaction( SIGCHLD, &act, 0) )
|
||||
{
|
||||
wperror( L"sigaction" );
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
}
|
||||
|
||||
#ifdef SIGWINCH
|
||||
|
@ -574,7 +574,7 @@ void signal_set_handlers()
|
|||
if( sigaction( SIGWINCH, &act, 0 ) )
|
||||
{
|
||||
wperror( L"sigaction" );
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -583,7 +583,7 @@ void signal_set_handlers()
|
|||
if( sigaction( SIGHUP, &act, 0 ) )
|
||||
{
|
||||
wperror( L"sigaction" );
|
||||
exit(1);
|
||||
FATAL_EXIT();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -661,6 +661,13 @@ void signal_unblock()
|
|||
|
||||
block_count--;
|
||||
|
||||
if( block_count < 0 )
|
||||
{
|
||||
debug( 0, _( L"Signal block mismatch" ) );
|
||||
bugreport();
|
||||
FATAL_EXIT();
|
||||
}
|
||||
|
||||
if( !block_count )
|
||||
{
|
||||
sigfillset( &chldset );
|
||||
|
|
Loading…
Reference in a new issue