Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Jul 2006 19:14:11 +0200
From:      Michael Nottebrock <lofi@freebsd.org>
To:        freebsd-hackers@freebsd.org
Cc:        freebsd-emulation@freebsd.org
Subject:   WINE vs. FreeBSD
Message-ID:  <200607221914.15826.lofi@freebsd.org>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Dear -hackers and -emulation readers,

I would like to call your attention to a few long-standing problems that have 
so far prevented WINE from living up to its capabilities on FreeBSD.

I am afraid that I still don't fully grasp the scope of the problem, nor do I 
have a clear idea of what the solution might be, but what I've gathered so 
far is this:

WINE does have certain requirements regarding memory allocation. In particular 
it (or Windows, rather) really wants a few memory ranges for itself:

(from wine-0.9.17/loader/preloader.c):

 *  0x00000000 - 0x00110000  the DOS area
 *  0x80000000 - 0x81000000  the shared heap
 *  ???        - ???         the PE binary load address (usually starting at 
0x00400000)

The first two are particularly important for WINE running in win98 (or 
earlier) emulation mode, which is currently completely broken on FreeBSD, 
since those two memory ranges tend to be unavailable.

The preloader bit from which this is quoted is WINE's "own shared object 
loader that reserves memory that is important to Wine, and then loads the 
main binary and its ELF interpreter", and obviously does not work
right on FreeBSD. I'm not sure whether it can be made to or not, perhaps
somebody familiar with both our VM and runtime linker could take a look.

Some more references:

http://www.winehq.org/pipermail/wine-devel/2004-December/031750.html
http://bugs.winehq.org/show_bug.cgi?id=5732

The other big issue with WINE on FreeBSD seems to be our threading support. 
WINE quite reliably manages to confuse libpthread, see
http://www.freebsd.org/cgi/query-pr.cgi?pr=threads/100701. On SMP machines, 
I've even been able to trigger kernel panics with WINE (in win2k+ emulation 
mode) by merely hitting the close button on a windows application (and WINE 
subsequently shutting down):
http://lists.freebsd.org/pipermail/freebsd-stable/2006-June/026219.html.

WINE's threads interface can be found in loader/pthread.c and 
loader/kthread.c - again, it would be great, if someone to whom that sort of 
code means more than just random gibberish could take a look.


Cheers,
-- 
   ,_,   | Michael Nottebrock               | lofi@freebsd.org
 (/^ ^\) | FreeBSD - The Power to Serve     | http://www.freebsd.org
   \u/   | K Desktop Environment on FreeBSD | http://freebsd.kde.org

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.4 (FreeBSD)

iD8DBQBEwlznXhc68WspdLARAvC4AKCEOdaRjbJHRXLiGXJ58chDdBc1gACfVV/e
CHFuqVURFbO+eOQCz7qLYVc=
=1K6U
-----END PGP SIGNATURE-----

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607221914.15826.lofi>