[Sablevm-user] SIGSEGV on startup
Brought to you by:
egagnon
From: Karl T. K. <ka...@pr...> - 2001-12-17 18:20:49
|
Hi. I recently compiled and installed the 0.1.6 version of sablevm. I am running a Linux system with the 2.4.14 kernel and glibc-2.2.4. Sablevm decides pretty early on to exit with a SIGSEGV. Some gdb tracing tells me that libsablevm/interpreter.c, line 97: locals = (_svmt_stack_value *) (((char *) frame) - method->locals_size); is the culprit, as method is NULL. Encasing this and the next assignment in an if(method) results in a new segfault later on (same file, around line 114: dispatch: NEXT(); as pc is 0. Inserting an explicit siglongjmp() if method is NULL at line 97 gets me a bit further: class_loader.c:892 892 (vm, *class_instance, vm->boot_loader.fields.jlclass_data->offset, *data); But here jlclass_data is 0, so a new SIGSEGV occurs. From reading the sources, it appears that the idea is that sigsegvs should be caught by the program itself and handled gracefully somehow. Is it the intention that sigsetjmp() handles this ? If so, has this function's semantics changed from 2.2 to 2.4 ? Has this problem been reproduced elsewhere ? Kind regards, Karl T |