http://bugs.winehq.org/show_bug.cgi?id=34147
Dave Gomboc dave_gomboc@acm.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dave_gomboc@acm.org
--- Comment #4 from Dave Gomboc dave_gomboc@acm.org --- I have reproduced the reported problem with a relatively current wine release (from Debian Jessie, self-advertised as 1.6.2), then again with the 1.2.1 release (compiled from the wine git, after using the patch posted at the bottom of http://forum.winehq.org/viewtopic.php?f=8&t=19959). Both the v5.64 and v5.66 versions of ilink fail with the attempt to release virtual memory at the null (0) address.
Is there a way I could tell wine to ignore attempts by a Windows application to free memory blocks that begin at address 0? (In such circumstances, I think it is highly probable that the memory in question has already been freed, and that the application developer followed up by assigning NULL or 0, then a second attempt to free memeory was made.)
I attempted to find a version of wine that works with (at least one of) these ilink versions in order to begin an automated bisect, but notwithstanding the above patching, I am encountering compilation errors on older Wine versions. For example, I get this error output with wine-1.1.0, after configuring with CC="gcc -m32" CFLAGS="-g -O0" ./configure --verbose --disable-tests --without-freetype, make depend, and make:
gcc -m32 -c -I. -I. -I../../include -I../../include -D__WINESRC__ -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wtype-limits -Wpointer-arith -g -O0 -o cond.tab.o cond.tab.c cond.tab.c: In function ‘cond_parse’: cond.tab.c:64:25: error: too few arguments to function ‘cond_lex’ #define yylex cond_lex ^ cond.tab.c:1329:16: note: in expansion of macro ‘yylex’ yychar = yylex (&yylval); ^ cond.y:66:12: note: declared here static int cond_lex( void *COND_lval, COND_input *info); ^ cond.y:137:46: error: ‘info’ undeclared (first use in this function) COND_input* cond = (COND_input*) info; ^ cond.y:137:46: note: each undeclared identifier is reported only once for each function it appears in cond.y: In function ‘MSI_EvaluateConditionW’: cond.y:744:11: error: too many arguments to function ‘cond_parse’ if ( !cond_parse( &cond ) ) ^ cond.tab.c:63:25: note: declared here #define yyparse cond_parse ^ cond.tab.c:1160:1: note: in expansion of macro ‘yyparse’ yyparse (void) ^ Makefile:232: recipe for target 'cond.tab.o' failed make[2]: *** [cond.tab.o] Error 1 make[2]: Leaving directory '/home/dgomboc/gits/wine/dlls/msi' Makefile:766: recipe for target 'msi' failed make[1]: *** [msi] Error 2 make[1]: Leaving directory '/home/dgomboc/gits/wine/dlls' Makefile:397: recipe for target 'dlls' failed make: *** [dlls] Error 2
With wine-1.0, following the same build procedure as above, I get the following error:
gcc -m32 -c -I. -I. -I../../include -I../../include -DINCLUDEDIR=""/usr/local/include/wine"" -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wtype-limits -Wpointer-arith -g -O0 -o writeres.o writeres.c bison -p parser_ -o parser.tab.c -d parser.y parser.y: warning: 5 shift/reduce conflicts [-Wconflicts-sr] bison -p parser_ -o parser.tab.c parser.y parser.y: warning: 5 shift/reduce conflicts [-Wconflicts-sr] gcc -m32 -c -I. -I. -I../../include -I../../include -DINCLUDEDIR=""/usr/local/include/wine"" -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wtype-limits -Wpointer-arith -g -O0 -o parser.tab.o parser.tab.c parser.y: In function ‘rsrcid_to_token’: parser.y:2990:15: error: ‘YYLEX’ undeclared (first use in this function) lookahead = YYLEX; ^ parser.y:2990:15: note: each undeclared identifier is reported only once for each function it appears in parser.y:2986:14: warning: variable ‘type’ set but not used [-Wunused-but-set-variable] const char *type = "?"; ^ Makefile:170: recipe for target 'parser.tab.o' failed make[2]: *** [parser.tab.o] Error 1 make[2]: Leaving directory '/home/dgomboc/gits/wine/tools/wrc' Makefile:381: recipe for target 'wrc' failed make[1]: *** [wrc] Error 2 make[1]: Leaving directory '/home/dgomboc/gits/wine/tools' Makefile:396: recipe for target 'tools' failed make: *** [tools] Error 2
With wine-0.9, I get breakage during the make depend step:
bison -d -t ./parser.y -o parser.tab.c ./parser.y:278.8-14: warning: symbol tSTRING redeclared [-Wother] %token tSTRING tIDENT tRAWDATA ^^^^^^^ ./parser.y:278.16-21: warning: symbol tIDENT redeclared [-Wother] %token tSTRING tIDENT tRAWDATA ^^^^^^ ./parser.y:278.23-30: warning: symbol tRAWDATA redeclared [-Wother] %token tSTRING tIDENT tRAWDATA ^^^^^^^^ ./parser.y: warning: 5 shift/reduce conflicts [-Wconflicts-sr] gcc -m32 -c -I. -I. -I../../include -I../../include -DINCLUDEDIR=""/usr/local/include/wine"" -Wall -pipe -mpreferred-stack-boundary=2 -fno-strict-aliasing -gstabs+ -Wdeclaration-after-statement -Wpointer-arith -g -O0 -o parser.tab.o parser.tab.c ./parser.y: In function ‘convert_ctlclass’: ./parser.y:2075:15: warning: comparison between ‘enum name_e’ and ‘enum str_e’ [-Wenum-compare] if(cls->type == str_unicode) ^ ./parser.y: In function ‘rsrcid_to_token’: ./parser.y:2922:14: warning: variable ‘type’ set but not used [-Wunused-but-set-variable] const char *type = "?"; ^ flex -Cf -d -8 ./parser.l gcc -m32 -c -I. -I. -I../../include -I../../include -DINCLUDEDIR=""/usr/local/include/wine"" -Wall -pipe -mpreferred-stack-boundary=2 -fno-strict-aliasing -gstabs+ -Wdeclaration-after-statement -Wpointer-arith -g -O0 -o lex.yy.o lex.yy.c lex.yy.c:7361:15: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant #define yystr 1 ^ lex.yy.c:9233:48: note: in expansion of macro ‘yystr’ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) ^ lex.yy.c:8745:17: warning: ‘yyunput’ defined but not used [-Wunused-function] static void yyunput (int c, register char * yy_bp ) ^ lex.yy.c:8795:16: warning: ‘input’ defined but not used [-Wunused-function] static int input (void) ^ lex.yy.c:9320:16: warning: ‘yy_top_state’ defined but not used [-Wunused-function] static int yy_top_state (void) ^ Makefile:150: recipe for target 'lex.yy.o' failed make[2]: *** [lex.yy.o] Error 1 make[2]: Leaving directory '/home/dgomboc/gits/wine/tools/wrc' Makefile:322: recipe for target 'wrc' failed make[1]: *** [wrc] Error 2 make[1]: Leaving directory '/home/dgomboc/gits/wine/tools' Makefile:342: recipe for target 'tools' failed make: *** [tools] Error 2
Are there additional patches that should be added to the pool of six? 3f98185fb8f88c181877e909ab1b6422fb9bca1e 8fcac3b2bb8ce4cdbcffc126df779bf1be168882 bda5a2ffb833b2824325bd9361b30dbaf5f78068 c14e322a92a24e704836c5c12207c694a30e805f f86c46f6403fe338a544ab134bdf563c5b0934ae ffbe1ca986bd299e1fc894440849914378adbf5
While I cannot sink a ton of time into figuring out my own workarounds for various compilation problems from scratch, if someone who has previously encountered these or similar can chime in with how to work around them, then I can work the git bisect and pin down the commit that introduced the breakage.
Alternatively, the second paragraph of this message might suggest a quicker way for someone knowledgeable with wine to track down the issue.