On Tue, 22 Jun 2004, Alexandre Julliard wrote:
Gerald Pfeifer pfeifer@dbai.tuwien.ac.at writes:
...and in fact, Alexandre, wouldn't it be better to have _some_ apps broken under Wine on FreeBSD than a completely broken Wine on FreeBSD for all apps?
Nope. What matters is not so much how many apps run today, but that we have a design that will allow at some point in the future to run all possible apps. We shouldn't compromise on a design that guarantees that some apps will *never* run just because it runs more apps today. Besides, a completely broken Wine is the best way to ensure that someone starts worrying about the issue <g>
Sadly, that's not how it worked this time. Rather, FreeBSD users are still using an old version of Wine, and Wine mainline gets worse and worse on that platform.
Would you mind considering the patch below, so that we can at least make some progress?
Gerald
ChangeLog: Disable memory reservation code on FreeBSD, where it just doesn't work? Index: libs/wine/mmap.c =================================================================== RCS file: /home/wine/wine/libs/wine/mmap.c,v retrieving revision 1.7 diff -u -3 -p -r1.7 mmap.c --- libs/wine/mmap.c 24 Jul 2004 02:30:09 -0000 1.7 +++ libs/wine/mmap.c 30 Oct 2004 20:04:47 -0000 @@ -254,6 +254,9 @@ void mmap_init(void) struct reserved_area *area; struct list *ptr; #ifdef __i386__ +#if ! defined(__FreeBSD__) + /* FIXME: this is broken on FreeBSD (verified on 4.10 and 5.2.1). */ + char stack; char * const stack_ptr = &stack; char *user_space_limit = (char *)0x80000000; @@ -280,6 +283,7 @@ void mmap_init(void) /* Linux heuristic: if the stack top is at c0000000, assume the address space */ /* ends there, this avoids a lot of futile allocation attempts */ if (base != (char *)0xc0000000) +#endif #endif reserve_area( base, 0 ); }