Error Invalid EXE Format when executing a exe.so built with winelib
Here is the Debug output: warn:module:load_builtin_dll failed to load .so lib for builtin L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so": /bb/home/.wine/dosdevices/z:/bb/s/bc/wine/dmsw.exe.so: cannot allocate memory in static TLS block warn:module:load_dll Failed to load module L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so"; status=c000007b warn:module:load_builtin_dll failed to load .so lib for builtin L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so": /bb/home/.wine/dosdevices/z:/bb/s/bc/wine/dmsw.exe.so: cannot allocate memory in static TLS block warn:module:load_dll Failed to load module L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so"; status=c000007b wine: could not load L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so": Fehlerhaftes EXE-Format f³r It has something to do with TLS memory or threads, but the /lib/tls/libc.so is linked in: (rw 8 amd64) /bb/s/bc/wine 105>ldd dmsw.exe.so linux-gate.so.1 => (0xffffe000) libwine.so.1 => /usr/local/lib/libwine.so.1 (0x557be000) libm.so.6 => /lib/tls/libm.so.6 (0x558e8000) libc.so.6 => /lib/tls/libc.so.6 (0x5590a000) libdl.so.2 => /lib/libdl.so.2 (0x55a1f000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x56555000) Our system: (rw 8 amd64) /bb/s/bc/wine 106>uname -a Linux amd64 2.6.5-7.193-smp #1 SMP Wed Jul 20 14:39:18 UTC 2005 x86_64 x86_64 x86_64 GNU/Linux glibc has version 2.3.3 A simple program does work, but no program which uses threads. wine is created with the 32 bit libraries. If I use the original exe of my program with wine, it does work. Does anyone has an idea what is going wrong? The makefile is attached. Thanks a lot. ### Generated by Winemaker TOPSRCDIR = /bb/s TOPOBJDIR = /bb/s/bc/wine SRCDIR = . SUBDIRS = DLLS = EXES = dmsw.exe ### Common settings CEXTRA = -mno-cygwin -fno-pic -fno-PIC CXXEXTRA = -mno-cygwin CFLAGS = -D_DMSW RCEXTRA = RCFLAGS = -DBB_WINE INCLUDE_PATH = -I. -I/bb/nt/wine -I/bb/s/i -I/bb/fg/i -I/bb/ze/i -I/bb/fe/i -I/bb/pbm/i -I/bb/wb1/i DLL_PATH = LIBRARY_PATH = LIBRARIES = -lmsvcrt40 -lws2_32 -lversion -lnetapi32 -liphlpapi -lcomctl32 -lshlwapi -lwinmm ### dmsw.exe sources and settings dmsw_exe_MODULE = dmsw.exe dmsw_exe_C_SRCS = /bb/s/c/bbcrypt.c \ /bb/s/c/bbdes.c \ /bb/s/c/bbmalloc.c \ /bb/s/c/bbmd5.c \ /bb/s/c/bbo.c \ /bb/s/c/bbtwofish.c \ /bb/s/c/cmp.c \ /bb/s/c/costri.c \ /bb/s/c/cpy.c \ /bb/s/c/datec.c \ /bb/s/c/dfa.c \ /bb/fg/c/dgcode.c \ /bb/fg/c/dgvar.c \ /bb/s/c/dhinfo.c \ /bb/s/c/dholz.c \ /bb/fg/c/digcte.c \ /bb/fg/c/digecm.c \ /bb/fg/c/digranox.c \ /bb/fg/c/digvec.c \ /bb/s/c/dirview.c \ /bb/s/c/dirwalk.c \ /bb/s/c/dmsb.c \ /bb/s/c/dmsc.c \ /bb/s/c/dmsca.c \ /bb/s/c/dmse.c \ /bb/s/c/dmsf.c \ /bb/s/c/dmsfr.c \ /bb/s/c/dmsg.c \ /bb/s/c/dmsh.c \ /bb/s/c/dmshc.c \ /bb/s/c/dmsl.c \ /bb/s/c/dmsliz.c \ /bb/s/c/dmsm.c \ /bb/s/c/dmsmv.c \ /bb/s/c/dmsp.c \ /bb/s/c/dmsr.c \ /bb/s/c/dmss.c \ /bb/s/c/dmssb.c \ /bb/s/c/dmst.c \ /bb/s/c/dmstast.c \ /bb/s/c/dmsw.c \ /bb/s/c/dmswf.c \ /bb/s/c/dmswicon.c \ /bb/s/c/dmsy.c \ /bb/s/c/encode.c \ /bb/s/c/fileleng.c \ /bb/s/c/fordat.c \ /bb/s/c/gtypes.c \ /bb/fg/c/image.c \ /bb/fg/c/imgprint.c \ /bb/s/c/itoa.c \ /bb/fg/c/jpegconv.c \ /bb/s/c/lru.c \ /bb/s/c/ltoa.c \ /bb/s/c/map.c \ /bb/s/c/msleep.c \ /bb/s/c/packbits.c \ /bb/s/c/packdiff.c \ /bb/s/c/pfad.c \ /bb/fg/c/rgbtools.c \ /bb/s/c/rtt.c \ /bb/s/c/scrinfo.c \ /bb/s/c/set.c \ /bb/s/c/sockcom.c \ /bb/s/c/softdum.c \ /bb/s/c/swap.c \ /bb/s/c/syslog.c \ /bb/s/c/textino.c \ /bb/fg/c/tiffconv.c \ /bb/s/c/udpcom.c \ /bb/s/c/utoa.c \ /bb/s/c/vgl.c \ /bb/s/c/w32argv.c \ /bb/fg/c/w32bmp.c \ /bb/s/c/w32error.c \ /bb/s/c/w32font.c \ /bb/fg/c/w32ico.c \ /bb/s/c/w32macadr.c \ /bb/s/c/w32pfad.c \ /bb/s/c/w32pipe.c \ /bb/s/c/w32print.c \ /bb/s/c/w32puts.c \ /bb/s/c/w32reg.c \ /bb/fg/c/w32scalebmp.c \ /bb/s/c/w32screen.c \ /bb/s/c/w32scroll.c \ /bb/s/c/w32toolbar.c \ /bb/s/c/w32tools.c \ /bb/s/c/w32winms.c \ /bb/s/c/wsinit.c \ /bb/s/c/zeitc.c dmsw_exe_CXX_SRCS= dmsw_exe_RC_SRCS = /bb/nt/rc/dmsw/dmsw_wine.rc dmsw_exe_LDFLAGS = -mwindows \ -mno-cygwin dmsw_exe_DLL_PATH= dmsw_exe_DLLS = odbc32 \ ole32 \ oleaut32 \ winspool dmsw_exe_LIBRARY_PATH= dmsw_exe_LIBRARIES= uuid dmsw_exe_OBJS = $(dmsw_exe_C_SRCS:.c=.o) \ $(dmsw_exe_CXX_SRCS:.cpp=.o) \ $(dmsw_exe_RC_SRCS:.rc=.res) ### Global source lists C_SRCS = $(dmsw_exe_C_SRCS) CXX_SRCS = $(dmsw_exe_CXX_SRCS) RC_SRCS = $(dmsw_exe_RC_SRCS) ### Tools CC = winegcc CXX = wineg++ RC = wrc ### Generic targets all: $(SUBDIRS) $(DLLS:%=%.so) $(EXES:%=%.so) ### Build rules .PHONY: all clean dummy $(SUBDIRS): dummy @cd $@ && $(MAKE) # Implicit rules .SUFFIXES: .cpp .rc .res DEFINCL = $(INCLUDE_PATH) $(DEFINES) $(OPTIONS) .c.o: $(CC) -c $(CFLAGS) $(CEXTRA) $(DEFINCL) -o $@ $< .cpp.o: $(CXX) -c $(CXXFLAGS) $(CXXEXTRA) $(DEFINCL) -o $@ $< .cxx.o: $(CXX) -c $(CXXFLAGS) $(CXXEXTRA) $(DEFINCL) -o $@ $< .rc.res: $(RC) $(RCFLAGS) $(RCEXTRA) $(DEFINCL) -fo$@ $< # Rules for cleaning CLEAN_FILES = y.tab.c y.tab.h lex.yy.c core *.orig *.rej \ \\\#*\\\# *~ *% .\\\#* clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) $(RM) $(CLEAN_FILES) $(RC_SRCS:.rc=.res) $(C_SRCS:.c=.o) $(CXX_SRCS:.cpp=.o) $(RM) $(DLLS:%=%.so) $(EXES:%=%.so) $(EXES:%.exe=%) $(SUBDIRS:%=%/__clean__): dummy cd `dirname $@` && $(MAKE) clean $(EXTRASUBDIRS:%=%/__clean__): dummy -cd `dirname $@` && $(RM) $(CLEAN_FILES) ### Target specific build rules DEFLIB = $(LIBRARY_PATH) $(LIBRARIES) $(DLL_PATH) $(dmsw_exe_MODULE).so: $(dmsw_exe_OBJS) $(CC) $(dmsw_exe_LDFLAGS) -o $@ $(dmsw_exe_OBJS) $(dmsw_exe_LIBRARY_PATH) $(DEFLIB) $(dmsw_exe_DLLS:%=-l%) $(dmsw_exe_LIBRARIES:%=-l%)
Roger Wimbert wrote:
Here is the Debug output:
warn:module:load_builtin_dll failed to load .so lib for builtin L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so": /bb/home/.wine/dosdevices/z:/bb/s/bc/wine/dmsw.exe.so: cannot allocate memory in static TLS block
It has something to do with TLS memory or threads, but the /lib/tls/libc.so is linked in:
(rw 8 amd64) /bb/s/bc/wine 105>ldd dmsw.exe.so linux-gate.so.1 => (0xffffe000) libwine.so.1 => /usr/local/lib/libwine.so.1 (0x557be000) libm.so.6 => /lib/tls/libm.so.6 (0x558e8000) libc.so.6 => /lib/tls/libc.so.6 (0x5590a000) libdl.so.2 => /lib/libdl.so.2 (0x55a1f000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x56555000)
Our system: (rw 8 amd64) /bb/s/bc/wine 106>uname -a Linux amd64 2.6.5-7.193-smp #1 SMP Wed Jul 20 14:39:18 UTC 2005 x86_64 x86_64 x86_64 GNU/Linux
Do you have NPTL compiled into your kernel? -- Rob Shearman
How can I verify that NPTL is in the kernel? Please excuse this question, but our Linux expert is at holidays ;) I've already found out that wine is using wine-pthread. A simple program without TLS works fine. Roger Robert Shearman schrieb:
Roger Wimbert wrote:
Here is the Debug output:
warn:module:load_builtin_dll failed to load .so lib for builtin L"Z:\\bb\\s\\bc\\wine\\dmsw.exe.so": /bb/home/.wine/dosdevices/z:/bb/s/bc/wine/dmsw.exe.so: cannot allocate memory in static TLS block
It has something to do with TLS memory or threads, but the /lib/tls/libc.so is linked in:
(rw 8 amd64) /bb/s/bc/wine 105>ldd dmsw.exe.so linux-gate.so.1 => (0xffffe000) libwine.so.1 => /usr/local/lib/libwine.so.1 (0x557be000) libm.so.6 => /lib/tls/libm.so.6 (0x558e8000) libc.so.6 => /lib/tls/libc.so.6 (0x5590a000) libdl.so.2 => /lib/libdl.so.2 (0x55a1f000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x56555000)
Our system: (rw 8 amd64) /bb/s/bc/wine 106>uname -a Linux amd64 2.6.5-7.193-smp #1 SMP Wed Jul 20 14:39:18 UTC 2005 x86_64 x86_64 x86_64 GNU/Linux
Do you have NPTL compiled into your kernel?
participants (2)
-
Robert Shearman -
Roger Wimbert