[Bug 34147] Borland ilink32 malfunctions in newer versions of wine

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Jul 15 10:43:13 CDT 2014


http://bugs.winehq.org/show_bug.cgi?id=34147

Dave Gomboc <dave_gomboc at acm.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dave_gomboc at acm.org

--- Comment #4 from Dave Gomboc <dave_gomboc at 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.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list