Fix for programs that store VirtualQueryEx results in signed integers (eg. The Borland Linker)

Troy Rollo wine at troy.rollo.name
Wed Mar 3 00:46:08 CST 2004


On Wed, 3 Mar 2004 16:20, Alexandre Julliard wrote:
> Actually we don't run on the main stack, so allocating the space above
> 0x80000000 would definitely be possible, the stack doesn't need to
> grow there.

In that case I could move the changes to start_process and incorporate the 
address space modifications as per the comments. The only issue then would be 
determining how far the original stack has already grown so as to know how 
many bytes to reserve (the alternative would be to deallocate the whole range 
and then reserve it, but if something else has mapped into that region in the 
interim this would not be helpful).

Options I can see for this would be:

1. Start with the expected size, and then looping until success, dropping the 
size by 65536 each iteration.

2. Start with the expected size, if that doesn't work use a binary search 
algorithm to see how many we can reserve.

3. Grovel at /proc/{pid}/mem on Linux, do nothing on others.

None of these is ideal. This might be in the "don't fix it until something's 
known to be broken" category.



More information about the wine-devel mailing list