http://bugs.winehq.org/show_bug.cgi?id=14816
Summary: Build breaks on "Solaris Express Community Edition" (SX:CE) (Solaris 11) at git + many warnings Product: Wine Version: 1.1.2 Platform: Sun OS/Version: Solaris Status: UNCONFIRMED Severity: normal Priority: P2 Component: build-env AssignedTo: wine-bugs@winehq.org ReportedBy: rob1weld@aol.com
My Operating System is "Solaris Express Community Edition".
bash-3.2$ uname -a SunOS unknown 5.11 snv_93 i86pc i386 i86pc
I am using the default (vendor supplied) gcc.
bash-3.2$ gcc -v Reading specs from /usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/specs Configured with: /builds2/sfwnv-gate/usr/src/cmd/gcc/gcc-3.4.3/configure --prefix=/usr/sfw --with-as=/usr/sfw/bin/gas --with-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=c,c++,f77,objc --enable-shared Thread model: posix gcc version 3.4.3 (csl-sol210-3_4-20050802)
You will notice that when the Programmers at Sun compiled gcc for their Operating System that they used the configure options "--with-as=/usr/sfw/bin/gas --with-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld". This is in accordance with Sun's recommended practice (use Sun's "ld" and not another).
When I configured Wine in keeping with the accepted practice on this platform and to identify X11's correct location I edited "tools/wineinstall". That file says such a change is permitted. Here is the small portion I edited:
#--- defaults (change these if you are a packager) #CONFARGS="" # configure args, e.g. --prefix=/usr CONFARGS="--prefix=/opt/gnu/wine --with-x --x-includes=/usr/include/X11 --x-libraries=/usr/X11/lib --with-as=/opt/gnu/bin/as --with-gnu-as --with-ld=/usr/ccs/bin/ld --without-gnu-ld"
Issue 1.): (Not a "bug", a problem)
There are way too many warnings of this nature: warning: visibility attribute not supported in this configuration; ignored
My build log was created by running the builder/installer with this command: bash-3.2$ ./tools/wineinstall 2>&1 | tee gmade_wine_1a_log.txt
bash-3.2$ ggrep visibility\ attribute\ not\ supported gmade_wine_1a_log.txt | wc -l 13820
My build log would be 13820 lines shorter if I did not get those warnings.
Issue 2.): (A "bug")
The build breaks here:
../../../tools/winegcc/winegcc -B../../../tools/winebuild -mconsole generated.o misc.o protocol.o stream.o url.o testlist.o -o urlmon_test.exe.so ../../../libs/port/libwine_port.a -lurlmon -lole32 -luser32 -ladvapi32 -lkernel32 -lsocket -lnsl cp ../../dlls/mshtml/tests/mshtml_test.exe.so mshtml_test.exe && strip mshtml_test.exe cp ../../dlls/msxml3/tests/msxml3_test.exe.so msxml3_test.exe && strip msxml3_test.exe cp ../../dlls/shdocvw/tests/shdocvw_test.exe.so shdocvw_test.exe && strip shdocvw_test.exe cp ../../dlls/urlmon/tests/urlmon_test.exe.so urlmon_test.exe && strip urlmon_test.exe ../../tools/wrc/wrc --nostdinc -I. -I. -I../../include -I../../include -DBUILD_SHA1="`GIT_DIR=../../.git git rev-parse HEAD 2>/dev/null`" -fowinetest.res winetest.rc *** Error code 137 make: Fatal error: Command failed for target `winetest.res' Current working directory /aux0/wine-1.1.2/programs/winetest *** Error code 1 The following command caused the error: cd winetest && make make: Fatal error: Command failed for target `winetest' Current working directory /aux0/wine-1.1.2/programs *** Error code 1 The following command caused the error: cd programs && make make: Fatal error: Command failed for target `programs'
Compilation failed, aborting install. bash-3.2$
If I type the exact same command by hand I do not get an error:
bash-3.2$ cd /aux0/wine-1.1.2/programs/winetest bash-3.2$ ../../tools/wrc/wrc --nostdinc -I. -I. -I../../include -I../../include -DBUILD_SHA1="`GIT_DIR=../../.git git rev-parse HEAD 2>/dev/null`" -fowinetest.res winetest.rc bash-3.2$ cd /aux0/wine-1.1.2 bash-3.2$
Perhaps if you used "ksh93 -c ..." or "bash -c ..." to execute that line you would have success.
Issue 3.): (A "bug")
The first time I compiled and installed Wine I got this error when I tried to run Wine:
start_wineboot failed to start wineboot, err 1359
I tried to search your bug list and the Internet to discover what error 1359 was with very little luck, see here http://www.google.ca/search?q=start+wineboot+%22err+1359" . Another reporter has made this entry (with a different error number):
[Bug 11158] Wineboot and virtual desktop http://www.winehq.org/pipermail/wine-bugs/2008-February/093660.html
The Wine executable resulting from my first build attempt had no debugging info so second time I compiled Wine I first set two environment variables:
bash-3.2$ set | grep FLAGS CFLAGS=-g CXXFLAGS=-g
I should be able to use gdb to trace what the error is. Sometimes Wine simply terminates with the above message and on other occasions the OS mentions an "Illegal Instruction".
Issue 4.): (A "bug")
My config.log says this (edited):
... configure:7340: checking ldap.h usability configure:7357: gcc -c -g conftest.c >&5 configure:7363: $? = 0 configure:7377: result: yes configure:7381: checking ldap.h presence configure:7396: gcc -E conftest.c configure:7402: $? = 0 configure:7416: result: yes configure:7449: checking for ldap.h configure:7457: result: yes ... configure:9811: result: yes configure:9763: checking for X11/extensions/Xrandr.h configure:9789: gcc -c -g -I/usr/include/X11 conftest.c >&5 conftest.c:110:35: X11/extensions/Xrandr.h: No such file or directory configure:9795: $? = 1 configure: failed program was: | /* confdefs.h. */ ... | #define HAVE_X11_EXTENSIONS_XINERAMA_H 1 | /* end confdefs.h. */ | #ifdef HAVE_X11_XLIB_H | # include <X11/Xlib.h> | #endif | #ifdef HAVE_X11_XUTIL_H | # include <X11/Xutil.h> | #endif | | #include <X11/extensions/Xrandr.h> configure:9811: result: no configure:9763: checking for X11/extensions/Xrender.h configure:9789: gcc -c -g -I/usr/include/X11 conftest.c >&5 configure:9795: $? = 0 configure:9811: result: yes configure:9763: checking for X11/extensions/xf86vmode.h configure:9789: gcc -c -g -I/usr/include/X11 conftest.c >&5 conftest.c:111:38: X11/extensions/xf86vmode.h: No such file or directory configure:9795: $? = 1 configure: failed program was: | /* confdefs.h. */ ... | #define HAVE_X11_EXTENSIONS_XRENDER_H 1 | /* end confdefs.h. */ | #ifdef HAVE_X11_XLIB_H | # include <X11/Xlib.h> | #endif | #ifdef HAVE_X11_XUTIL_H | # include <X11/Xutil.h> | #endif | | #include <X11/extensions/xf86vmode.h> configure:9811: result: no ... configure:10681: checking for -lXinerama configure:10716: gcc -o conftest -g -I/usr/include/X11 conftest.c -lXinerama -L/usr/X11/lib -R/usr/X11/lib -lXext -lX11 -lsocket -lnsl >&5 configure:10722: $? = 0 configure:10749: result: libXinerama.so.1 ... configure:14597: checking for esd-config configure:14615: found /usr/bin/esd-config configure:14627: result: /usr/bin/esd-config configure:14647: checking for esd_open_sound in -lesd configure:14682: gcc -o conftest -g conftest.c -lesd -L/usr/lib -lesd -laudiofile -lm >&5 configure:14688: $? = 0 configure:14706: result: yes ... configure:17730: checking for LDAPSortKey configure:17761: gcc -c -g conftest.c >&5 conftest.c:226: error: syntax error before "ac__type_new_" conftest.c:226: warning: data definition has no type or storage class conftest.c: In function `main': conftest.c:230: error: syntax error before ')' token ... | /* end confdefs.h. */ | #include <ldap.h> | | typedef LDAPSortKey ac__type_new_; | int | main () | { | if ((ac__type_new_ *) 0) | return 0; | if (sizeof (ac__type_new_)) | return 0; | ; | return 0; | } configure:17782: result: no configure:17942: checking for ldap_count_references configure:17998: gcc -o conftest -g conftest.c -lsocket -lnsl -lpthread >&5 Undefined first referenced symbol in file ldap_count_references /var/tmp//ccI1aqbB.o ld: fatal: Symbol referencing errors. No output written to conftest collect2: ld returned 1 exit status
The result of those tests not being written in a manner that is compatible with Solaris and thus failing (when given a chance they could work) is this message:
config.status:1665: executing include/wine commands configure:24483: libXxf86vm development files not found, XFree86 Vidmode won't be supported. configure:24483: libxrandr development files not found, XRandr won't be supported. configure:24483: libcapi20 development files not found, ISDN won't be supported. configure:24483: libldap (OpenLDAP) development files not found, LDAP won't be supported. configure:24491: WARNING: No sound system was found. Windows applications will be silent.
I do have Xrandr.h and xf86vmode.h (note how "xinerama.h" in the same directory is found). You are using "gcc -I/usr/include/X11 ..." and in the conftest program you have "#include <X11/extensions/Xrandr.h>".
That would mean that "Xrandr.h" would have to be in the "/usr/include/X11/X11/extensions/Xrandr.h" file, instead of the "/usr/include/X11/extensions/Xrandr.h" file.
# ls -l /usr/X11/include/X11/extensions/ ... -r--r--r-- 1 root bin 11583 Jun 20 16:04 Xrandr.h ... -r--r--r-- 1 root bin 8569 Jun 20 15:14 xf86vmode.h ... -r--r--r-- 1 root bin 1999 Jun 5 13:37 xinerama.h
I do have libldap and if you used "-lldap" in your test it would work better:
# ls -l /usr/lib/libldap.so lrwxrwxrwx 1 root root 12 Jul 18 15:28 /usr/lib/libldap.so -> libldap.so.5
There are a few things that need fixing to support Solaris (and in some of the above cases the other OSes also).
Want a free copy of Solaris 11 (with ZFS) ?
Solaris Express Community Edition DVD - Build 95 http://opensolaris.org/os/downloads/sol_ex_dvd/
Thanks for the free software. I had Wine working quite well on GNU/Linux (Debian) so hopefully it will be working on Solaris sometime soon.
BTW: The link to the 'binary' at Blastwave is 404.
http://bugs.winehq.org/show_bug.cgi?id=14816
--- Comment #1 from Rob rob1weld@aol.com 2008-08-10 09:41:47 --- I noticed that I also needed to set LDFLAGS=-g so I ended up compiling a third time.
A note on installing / uninstalling.
You can not run the tools/wineinstall script as root and must run it as another user. When it comes time to uninstall Wine (so you can re-compile and re-install) you "gmake uninstall" and it runs, but incompletely. You need to be root for it to uninstall, it would be great if you were not root that the scripts would ask for the root PW as they do during installation.
So now I have a debug version of Wine. Unfortunately the files might get renamed before linking so the debugger can not find it's source and provide proper backtraces. Here is where I am thus far (trying to install COD2 demo):
bash-3.2$ /opt/gnu/gdb-6.8/bin/gdb --args wine cod2demo.exe GNU gdb 6.8 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i386-pc-solaris2.11"... (gdb) l 93 94 /********************************************************************** 95 * main 96 */ 97 int main( int argc, char *argv[] ) 98 { 99 char error[1024]; 100 int i; 101 102 check_command_line( argc, argv ); (gdb) 103 if (wine_main_preload_info) 104 { 105 for (i = 0; wine_main_preload_info[i].size; i++) 106 reserve_area( wine_main_preload_info[i].addr, wine_main_preload_info[i].size ); 107 } 108 109 wine_pthread_set_functions( &pthread_functions, sizeof(pthread_functions) ); 110 wine_init( argc, argv, error, sizeof(error) ); 111 fprintf( stderr, "wine: failed to initialize: %s\n", error ); 112 exit(1); (gdb) b 110 Breakpoint 1 at 0x8051954: file main.c, line 110. (gdb) r Starting program: /opt/gnu/wine/bin/wine cod2demo.exe
Breakpoint 1, main (argc=2, argv=0x8047018) at main.c:110 110 wine_init( argc, argv, error, sizeof(error) ); (gdb) s err:process:start_wineboot failed to start wineboot, err 1359
Program received signal SIGTRAP, Trace/breakpoint trap. 0xfefc6efa in ?? () (gdb) where #0 0xfefc6efa in ?? () (gdb) l process.c:start_wineboot No source file named process.c. (gdb) l start_wineboot Function "start_wineboot" not defined. (gdb)
I will need to figure out where this function is getting renamed so gdb will use the source from this file. If you want to use gdb-6.8 on Solaris be prepared to compile it yourself.
http://bugs.winehq.org/show_bug.cgi?id=14816
--- Comment #2 from Rob rob1weld@aol.com 2008-08-10 10:44:58 --- (gdb) c Continuing. err:process:start_wineboot failed to start wineboot, err 1359
Program received signal SIGILL, Illegal instruction. 0x7ff9d077 in sigaction_syscall () at stat_impl.h:186 186 } (gdb) where #0 0x7ff9d077 in sigaction_syscall () at stat_impl.h:186 #1 0x7ff9d146 in solaris_sigaction (sig=2, new=0x80463d0, old=0x0) at signal_i386.c:620 #2 0x7ff9ee7e in signal_init_process () at signal_i386.c:1613 #3 0x7ff9cc6a in server_init_process_done () at server.c:988 #4 0x7ff8032e in LdrInitializeThunk (unknown1=0, unknown2=0, unknown3=0, unknown4=0) at loader.c:2415 #5 0x7fbf2439 in __wine_kernel_init () at process.c:1056 #6 0x7ff80a30 in __wine_process_init () at loader.c:2622 #7 0xfee693b8 in wine_init (argc=4, argv=0x8047010, error=0x8046be4 "", error_size=1024) at loader.c:656 #8 0x0805196b in main (argc=4, argv=0x8047010) at main.c:110 (gdb)
My "/usr/include/sys/stat_impl.h" does not have a "sigaction_syscall()" function so gdb's claim of 'where' does not help:
(gdb) where #0 0x7ff9d077 in sigaction_syscall () at stat_impl.h:186
# ggrep -r sigaction_syscall /aux0/wine-1.1.2 /aux0/wine-1.1.2/dlls/ntdll/signal_i386.c:extern int sigaction_syscall( int sig, const struct sigaction *new, struct sigaction *old ); /aux0/wine-1.1.2/dlls/ntdll/signal_i386.c:__ASM_GLOBAL_FUNC( sigaction_syscall, /aux0/wine-1.1.2/dlls/ntdll/signal_i386.c: sigaction_syscall( sig, NULL, &real_act ); /aux0/wine-1.1.2/dlls/ntdll/signal_i386.c: sigaction_syscall( sig, &real_act, NULL ); Binary file /aux0/wine-1.1.2/dlls/ntdll/ntdll.dll.so matches Binary file /aux0/wine-1.1.2/dlls/ntdll/signal_i386.o matches
The call in function solaris_sigaction(sig=2, new=0x80463d0, old=0x0) (at signal_i386.c:620) is the first attempt to call sigaction_syscall() and it fails.
This means that the assembly language code in file wine-1.1.2/dlls/ntdll/signal_i386.c, function sigaction_syscall(), lines 587 to 595 is not correct or the supplied parameters are incorrect.
I am not expert on 'Kernel Call Programming' in Solaris 11 but I will see if I can provide a patch (don't hold your breath).
http://bugs.winehq.org/show_bug.cgi?id=14816
Rob rob1weld@aol.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |major Keywords| |BugBuster, download, | |regression, source
--- Comment #3 from Rob rob1weld@aol.com 2008-08-10 20:39:07 --- It is my (non-expert in Kernel Programming) opinion that you are setting up the call to "sysenter" incorrectly (for Solaris 11 / OpenSolaris).
You are using a simple "#ifdef __sun" (in file signal_i386.c) to test for the Operating System and thus are grouping a few different series of Solaris together.
I searched the Internet for some assistance and came up with a few tidbits:
[osol-code] consolidation of x86 32-bit syscall implementations? http://archive.netbsd.se/?ml=opensolaris-code&a=2006-06&t=2097704
Not to forget the "generic" libc (which uses lcall $0x27,0 in S10 FCS and int 0x91 in later S10 updates and in OpenSolaris/Nevada).
* sysenter is only available on x86_32 with the supervisor_mode_kernel option enabled.
If you obtain SXCE (the development platform on which to compile OpenSolaris, see link above), download the OpenSolaris source code, and un-tar it into the recommended location you will have a file called: /aux0/testws/usr/src/lib/libc/i386/inc/SYS.h
The header of much of the OpenSolaris source code contains this License:
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
I can not post code from "SYS.h" since your file "signal_i386.c" is GPL 2.1+ and that License is not the same as Sun's CDDL.
What I can say is that Sun does not setup for "sysenter" (on Solaris 11) the same way that you setup for "sysenter" in the code contained in "signal_i386.c".
While I search for some GPL code to offer you I decided to test how well Solaris 11's sigaction() function would work and simply commented out your line:
/* #define sigaction(sig,new,old) solaris_sigaction(sig,new,old) */
so that your "#ifdef __sun" became a NULL and Sun's 'real' sigaction code would be used.
That produced an interesting result:
(gdb) c Continuing. err:iphlpapi:getNumWithOneHeader Unable to open '/proc/net/route' to count entries! err:iphlpapi:getRouteTable unimplemented! Could not load Mozilla. HTML rendering will be disabled. err:iphlpapi:getNumWithOneHeader Unable to open '/proc/net/route' to count entries! err:iphlpapi:getRouteTable unimplemented! err:module:load_builtin_dll failed to load .so lib for builtin L"msxml3.dll": ld.so.1: wine: fatal: libiconv.so.2: open failed: No such file or directory err:module:load_builtin_dll failed to load .so lib for builtin L"msxml3.dll": ld.so.1: wine: fatal: libiconv.so.2: open failed: No such file or directory wine: configuration in '/export/home/vmware/.wine' has been updated. Segmentation Fault (core dumped) bash-3.2$ err:module:attach_process_dlls "user32.dll" failed to initialize, aborting err:module:LdrInitializeThunk Main exe initialization for L"C:\windows\system32\start.exe" failed, status 80000003
bash-3.2$
First issue, a "regular user" does not have read access to "/proc/net/route".
bash-3.2$ whoami notroot
bash-3.2$ ls -l /proc/net/route /proc/net/route: No such file or directory
bash-3.2$ ls -l /proc/net/ /proc/net/: No such file or directory
bash-3.2$ ls -l /proc/ total 188 dr-x--x--x 5 root root 864 Dec 27 1986 0 dr-x--x--x 5 root root 864 Dec 27 1986 1 (a few dozen more files, with numbers for names, but no "net") ...
Next issue, Solaris has "Firefox" not "Mozilla".
Next issue:
"err:module:load_builtin_dll failed to load .so lib for builtin L"msxml3.dll": ld.so.1: wine: fatal: ..."
It looks like "load_builtin_dll" is trying to load ".so". If instead that message means you are trying to find libiconv.so.2 or msxml3.dll then here are the results for those files:
bash-3.2$ ldd /opt/csw/lib/libiconv.so.2 libc.so.1 => /lib/libc.so.1 libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1 libm.so.2 => /lib/libm.so.2
bash-3.2$ ldd /opt/gnu/wine/lib/wine/msxml3.dll.so libxml2.so.2 => /lib/libxml2.so.2 libpthread.so.1 => /lib/libpthread.so.1 libz.so => /lib/libz.so libiconv.so.2 => (file not found) libm.so.2 => /lib/libm.so.2 libsocket.so.1 => /lib/libsocket.so.1 libnsl.so.1 => /lib/libnsl.so.1 libxslt.so.1 => /usr/lib/libxslt.so.1 libwine.so.1 => (file not found) libc.so.1 => /lib/libc.so.1 libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1 libmp.so.2 => /lib/libmp.so.2 libmd.so.1 => /lib/libmd.so.1 libscf.so.1 => /lib/libscf.so.1 libuutil.so.1 => /lib/libuutil.so.1 libgen.so.1 => /lib/libgen.so.1 bash-3.2$
So you appear to be looking for "msxml3.dll" when the file is called "msxml3.dll.so" (and there is no link from "msxml3.dll" to "msxml3.dll.so") and the shared library "msxml3.dll.so" was not linked with the correct "-R" to dynamically link libiconv, thus this: libiconv.so.2 => (file not found)
If the sigaction code does get fixed there will surely be other issues once we get past that point.
Due to all these issues I am bumping the "Severity" up one level (from "Normal" to "Major").
http://bugs.winehq.org/show_bug.cgi?id=14816
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|BugBuster, download, | |regression |
http://bugs.winehq.org/show_bug.cgi?id=14816
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|major |normal Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #4 from Dmitry Timoshkov dmitry@codeweavers.com 2008-08-11 07:16:59 --- That bug has been fixed in git already.
http://bugs.winehq.org/show_bug.cgi?id=14816
--- Comment #5 from Austin English austinenglish@gmail.com 2008-08-11 09:35:14 --- Some of these bugs are still valid, but I'd suggests filing individual bugs Rob, so they're easier to read/follow/understand.
http://bugs.winehq.org/show_bug.cgi?id=14816
Rob rob1weld@aol.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |major
--- Comment #6 from Rob rob1weld@aol.com 2008-08-11 13:49:03 --- ------- Comment #4 From Dmitry Timoshkov 2008-08-11 07:16:59 [reply] -------
That bug has been fixed in git already.
------- Comment #5 From Austin English 2008-08-11 09:35:14 [reply] -------
Some of these bugs are still valid, but I'd suggests filing individual bugs Rob, so they're easier to read/follow/understand.
---
I'll try the git, see what remains, and report back.
If I find any bugs remain then I'll file a new report and reference this "RESOLVED FIXED" report.
Thanks, Rob
http://bugs.winehq.org/show_bug.cgi?id=14816
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org 2008-08-22 10:49:12 --- Closing bugs fixed in 1.1.3.
http://bugs.winehq.org/show_bug.cgi?id=14816
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Platform|sparc |Other
--- Comment #8 from Austin English austinenglish@gmail.com 2013-03-11 18:11:03 CDT --- Deprecating sparc platform.