[Bug 2258] New: Crash due to _fini

Wine Bugs wine-bugs at winehq.org
Fri May 28 02:16:31 CDT 2004


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

           Summary: Crash due to _fini
           Product: Wine
           Version: 20040505
          Platform: Other
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: wine-binary
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: rajeevb at interrait.com


Test Program :

#include <dlfcn.h>
#include <direct.h>
#include <math.h>
#include <stdio.h>

main()
{
char *a;
char *b;
double d;
void *mod, *ker;
const char *error;
mod=dlopen("msvcrt.dll.so",RTLD_LAZY);
ker=dlopen("kernel32.dll.so",RTLD_LAZY);
if(mod)
{

	if ((error = dlerror())) {
   		printf("Couldn't find getcwd: %s\n", error);
	}

	if(dlsym(mod, "getcwd")){
		printf("found");
		b=getcwd(a,20);
	}

	dlclose(mod);
	dlclose(ker);
} //end if	
return (0);
} //end main

Build command :

g++ -g -Wall -c -I/home/timex/wine/wine-20040505/include -I. -
I/home/timex/wine/wine-20040505/include/msvcrt test.cpp
g++ -g -ldl /home/timex/wine/wine-20040505/dlls/msvcrt.dll.so test.o

Debugger output

[me at cvs TUCP]$ gdb -n
GNU gdb Red Hat Linux (5.2.1-4)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux".
(gdb) file ./a.out
Reading symbols from ./a.out...done.
(gdb) break test.cpp:10
Breakpoint 1 at 0x80486cc: file test.cpp, line 10.
(gdb) run 
Starting program: /home/a.out 

Breakpoint 1, main () at test.cpp:14
14      mod=dlopen("msvcrt.dll.so",RTLD_LAZY);
(gdb) next
15      ker=dlopen("kernel32.dll.so",RTLD_LAZY);
(gdb) disp mod
1: mod = (void *) 0x40013578
(gdb) disp ker
2: ker = (void *) 0x4026cc40
(gdb) next
16      if(mod)
2: ker = (void *) 0x8049b60
1: mod = (void *) 0x40013578
(gdb) next
19       if(dlsym(mod, "getcwd"))
2: ker = (void *) 0x8049b60
1: mod = (void *) 0x40013578
(gdb) next
20      {printf("found");
2: ker = (void *) 0x8049b60
1: mod = (void *) 0x40013578
(gdb) next
21      b=getcwd(a,20);
2: ker = (void *) 0x8049b60
1: mod = (void *) 0x40013578
(gdb) step
getcwd (buf=0x4026cc40 "T\v\022", size=20) at direct.h:73
73      static inline char* getcwd(char * buf, int size) { return _getcwd(buf, 
size); }
(gdb) step
_getcwd (buf=0x4026cc40 "T\v\022", size=20) at dir.c:424
424       int dir_len = GetCurrentDirectoryA(MAX_PATH,dir);
Current language:  auto; currently c
(gdb) step
422     {
(gdb) step
424       int dir_len = GetCurrentDirectoryA(MAX_PATH,dir);
(gdb) step
422     {
(gdb) step
424       int dir_len = GetCurrentDirectoryA(MAX_PATH,dir);
(gdb) step

Program received signal SIGTRAP, Trace/breakpoint trap.
0x40062179 in _fini () from /home/timex/wine/wine-20040505/dlls/msvcrt.dll.so
(gdb) bt
#0  0x40062179 in _fini () from /home/timex/wine/wine-
20040505/dlls/msvcrt.dll.so
#1  0x08048790 in getcwd (buf=0x4026cc40 "T\v\022", size=20) at direct.h:73
#2  0x08048730 in main () at test.cpp:21
#3  0x40161b84 in __libc_start_main () from /lib/libc.so.6
(gdb)

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list