dosemu consistantly segfaults on one of my machines.
i'm using version 1.1.3.7 with the experimental sound patches under
vanilla 2.4.20. machine arch is AMD athlon 1st generation 1.4 GHz with
a 1st generation ATI radeon.
the machine didn't oops.
backtrace is follows:
lucifer# gdb /usr/local/bin/dos-debug
(gdb) run
Starting program: /usr/local/bin/dos-debug
Linux kernel 2.4.19; CPU speed is 1300264000 Hz
Dosemu-1.1.3.7 Running on CPU=586, FPU=1
Program received signal SIGSEGV, Segmentation fault.
0x080aeda4 in real_yylex (yylval=0x4d003b) at lexer.l:707
707 yylval->s_value = strdup(&yytext[1]);
(gdb) bt
#0 0x080aeda4 in real_yylex (yylval=0x4d003b) at lexer.l:707
#1 0x08107251 in _IO_stdin_used ()
the area of code:
(gdb) l 707
702 {STRQUOTELESS} MAY_BEFORME {
703 yylval->s_value = strdup(yytext);
704 EXPRTYPE(yylval->s_value) = TYPE_STRQUOTELESS;
705 return(STRING); }
706 ${IDENT} MAY_BE {
707 yylval->s_value = strdup(&yytext[1]);
708 EXPRTYPE(yylval->s_value) =
TYPE_STRQUOTELESS;
709 return(VARIABLE);
710 }
711 $${IDENT} MAY_BE { enter_macrofile(&yytext[2]);}
(gdb) printf "%s", &yytext[1]
_DOSEMU_ORIG_PATH(gdb)
(gdb) printf "%s", strdup(&yytext[1])
_DOSEMU_ORIG_PATH(gdb)
(gdb) printf "%s", yylval->s_value
Cannot access memory at address 0x4d003b
(gdb) printf "%s", yylval->s_value
Cannot access memory at address 0x4d003b
(gdb) ptype yylval->s_value
type = char *
(gdb) p yylval->s_value = strdup(&yytext[1])
Cannot access memory at address 0x4d003b
i'm a bit confused at this point. it looks like the address returned by
strdup is no good, but i have no idea how that can be.
strace provides no help:
write(2, "Linux kernel 2.4.19; CPU speed i"..., 48) = 48
write(2, "Dosemu-1.1.3.7 Running on CPU=58"..., 41) = 41
brk(0x832d000) = 0x832d000
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++
ltrace output pretty much confirms what the backtrace said:
strcmp("parser_version_3", "h_lucifer") = 8
strcmp("parser_version_3", "c_all") = 13
strcmp("parser_version_3", "parser_version_3") = 0
strchr(""/etc/dosemu.conf"", '\n') = NULL
__strdup(0x08329490, 10, 0, 0x080aa782, 0x08107251) = 0x0832cb78
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++
dosemu works fine on my other machines. this seems to be a problem with
this machine only, but nothing about this looks arch dependent to me.
any suggestions?
pete
--
Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D
-
To unsubscribe from this list: send the line "unsubscribe linux-msdos" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html