mirror of
https://github.com/ptitSeb/box64.git
synced 2025-05-09 00:21:32 +08:00
Added an option to always show SIGSEGV messages
This commit is contained in:
parent
b525b0bdd4
commit
9c47b1fbf9
@ -78,6 +78,11 @@ Disable handling of SigILL (to ease debugging mainly).
|
||||
* 0 : Let x86 program set sighandler for Illegal Instruction
|
||||
* 1 : Disables the handling of SigILL
|
||||
|
||||
#### BOX64_SHOWSEGV
|
||||
Show Segfault signal even if a signal handler is present
|
||||
* 0 : Don"t force show the SIGSEGV analysis (Default.)
|
||||
* 1 : Show SIGSEGV detail, even if a signal handler is present
|
||||
|
||||
#### BOX64_X11THREADS
|
||||
Call XInitThreads when loading X11. (This is mostly for old Loki games with the Loki_Compat library.)
|
||||
* 0 : Don't force call XInitThreads. (Default.)
|
||||
|
@ -39,6 +39,7 @@ extern int box64_wine;
|
||||
extern int box64_nopulse; // disabling the use of wrapped pulseaudio
|
||||
extern int box64_nogtk; // disabling the use of wrapped gtk
|
||||
extern int box64_novulkan; // disabling the use of wrapped vulkan
|
||||
extern int box64_showsegv; // show sigv, even if a signal handler is present
|
||||
extern uintptr_t fmod_smc_start, fmod_smc_end; // to handle libfmod (from Unreal) SMC (self modifying code)
|
||||
extern uint32_t default_gs;
|
||||
extern int jit_gdb; // launch gdb when a segfault is trapped
|
||||
|
@ -749,7 +749,7 @@ static pthread_mutex_t mutex_dynarec_prot;
|
||||
void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx)
|
||||
{
|
||||
// sig==SIGSEGV || sig==SIGBUS || sig==SIGILL here!
|
||||
int log_minimum = (my_context->is_sigaction[sig] && sig==SIGSEGV)?LOG_DEBUG:LOG_INFO;
|
||||
int log_minimum = (box64_showsegv)?LOG_NONE:((my_context->is_sigaction[sig] && sig==SIGSEGV)?LOG_DEBUG:LOG_INFO);
|
||||
ucontext_t *p = (ucontext_t *)ucntx;
|
||||
void* addr = (void*)info->si_addr; // address that triggered the issue
|
||||
void* rsp = NULL;
|
||||
|
11
src/main.c
11
src/main.c
@ -81,6 +81,7 @@ int box64_wine = 0;
|
||||
int box64_nopulse = 0;
|
||||
int box64_nogtk = 0;
|
||||
int box64_novulkan = 0;
|
||||
int box64_showsegv = 0;
|
||||
char* libGL = NULL;
|
||||
uintptr_t fmod_smc_start = 0;
|
||||
uintptr_t fmod_smc_end = 0;
|
||||
@ -548,6 +549,15 @@ void LoadLogEnv()
|
||||
if(jit_gdb)
|
||||
printf_log(LOG_INFO, "Launch %s on segfault\n", (jit_gdb==2)?"gdbserver":"gdb");
|
||||
}
|
||||
p = getenv("BOX64_SHOWSEGV");
|
||||
if(p) {
|
||||
if(strlen(p)==1) {
|
||||
if(p[0]>='0' && p[0]<='0'+1)
|
||||
box64_showsegv = p[0]-'0';
|
||||
}
|
||||
if(box64_showsegv)
|
||||
printf_log(LOG_INFO, "Show Segfault signal even if a signal handler is present\n");
|
||||
}
|
||||
box64_pagesize = sysconf(_SC_PAGESIZE);
|
||||
if(!box64_pagesize)
|
||||
box64_pagesize = 4096;
|
||||
@ -676,6 +686,7 @@ void PrintHelp() {
|
||||
printf(" BOX64_LOAD_ADDR=0xXXXXXX try to load at 0xXXXXXX main binary (if binary is a PIE)\n");
|
||||
printf(" BOX64_NOSIGSEGV=1 to disable handling of SigSEGV\n");
|
||||
printf(" BOX64_NOSIGILL=1 to disable handling of SigILL\n");
|
||||
printf(" BOX64_SHOWSEGV=1 to show Segfault signal even if a signal handler is present\n");
|
||||
printf(" BOX64_X11THREADS=1 to call XInitThreads when loading X11 (for old Loki games with Loki_Compat lib)");
|
||||
printf(" BOX64_LIBGL=libXXXX set the name (and optionnaly full path) for libGL.so.1\n");
|
||||
printf(" BOX64_LD_PRELOAD=XXXX[:YYYYY] force loading XXXX (and YYYY...) libraries with the binary\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user