From: Sam S. <sd...@gn...> - 2008-11-20 16:08:20
|
Hi (sys::program-name) returns garbage on amd64 with pthreads. find_executable works and sets executable_name correctly, but when (sys::program-name) is called, executable_name contains garbage: (gdb) run Starting program: /homedata/ssteingold/src/clisp/current/build-g-mt/lisp.run -B . -N locale -E 1:1 -q -norc -M lispinit.mem [Thread debugging using libthread_db enabled] [New Thread 46912498368544 (LWP 23469)] [Switching to Thread 46912498368544 (LWP 23469)] Breakpoint 6, find_executable ( program_name=0x7fff05cb8110 "/homedata/ssteingold/src/clisp/current/build-g-mt/lisp.run") at execname.c:63 63 if (executable_name != NULL) return 0; (gdb) finish Run till exit from #0 find_executable ( program_name=0x7fff05cb8110 "/homedata/ssteingold/src/clisp/current/build-g-mt/lisp.run") at execname.c:63 init_lowest_level (argv=0x7fff05cb79a8) at ../src/spvw.d:2308 2308 } Value returned is $1 = 0 (gdb) p executable_name $2 = 0x1b016530 "/homedata/ssteingold/src/clisp/current/build-g-mt/lisp.run" (gdb) c Continuing. STACK size: 98222 [0x2aaaaad90e00 0x2aaaaacd1090] [New Thread 1090521408 (LWP 23474)] [1]> (sys::program-name) [Switching to Thread 1090521408 (LWP 23474)] Breakpoint 7, get_executable_name () at execname.c:52 52 char *get_executable_name (void) { return executable_name; } (gdb) p executable_name $3 = 0x1b016530 "���" (gdb) c Continuing. "���" [2]> observe that the memory location where executable_name points is the same, but the contents has been overwritten with garbage. Sam |