Re: Could not run Digital Mars C/C++ Compiler under Wine

2006-03-25 Thread Igor Sysoev

On Sat, 25 Mar 2006, Eric Pouech wrote:


Igor Sysoev wrote:

On Thu, 23 Mar 2006, Eric Pouech wrote:


Igor Sysoev wrote:


When I try to run any program from Digital Mars C/C++ Compiler
http://www.digitalmars.com/download/freecompiler.html
under Wine 0.9.10 on FreeBSD 6.1, I always see the error:


this works fine here (on Linux)... may be a freebsd issue ?



Well, is the way to try to debug the problem ? Some debug log ?

from what I see from your first post, a few remarks:
- file_set_error: Bad address => likely a read/write operation that fails 
with an incorrect buffer

- stack overflow sent as a signal to the debugger

it may well sound like that the running thread doesn't have all the required 
memory
another strange item: fs is set to 1007 which is a rather high value (maybe 
that's what you get on FreeBSD)

I'd start by looking at the stack allocation for the threads

it also seems that you cannot get to the debug information (as dbghelp cannot 
initiate), but this sounds like another issue


I can run "WINEDEBUG=+all wine dmc.exe" and send a log.


Igor Sysoev
http://sysoev.ru/en/




Re: ilink32 hungs under Wine 0.9.10

2006-03-25 Thread Igor Sysoev

On Thu, 23 Mar 2006, Igor Sysoev wrote:


When I try to link with ilink32.exe from C++ Builder Compiler and
Command Line Tools ( http://appdb.winehq.org/appview.php?versionId=1423 )
ilink32 hangs.

I saw comment on http://appdb.winehq.org/appview.php?versionId=1423
about changing ADDRESS_SPACE_LIMIT. Could be applied to 0.9.10 ?


I've tested changing ADDRESS_SPACE_LIMIT to 0x8000 (patch attached)
and ilink32.exe runs successfully.

There is another patch

http://www.winehq.com/hypermail/wine-devel/2004/03/att-0082/01-0012-wine-fix-bcc55.patch

that marks the page at 0x8000 as reserved.

As I know Windows has a compatibility code to emulate old bugs and
undocumented for some applications depending on program name. Why not
to add similar functionality to Wine ?


Igor Sysoev
http://sysoev.ru/en/--- dlls/ntdll/virtual.cSat Mar 25 13:36:11 2006
+++ dlls/ntdll/virtual.cSat Mar 25 13:49:41 2006
@@ -120,7 +120,7 @@ static RTL_CRITICAL_SECTION csVirtual = 
 # define page_shift 12
 # define page_size  0x1000
 /* Note: these are Windows limits, you cannot change them. */
-# define ADDRESS_SPACE_LIMIT  ((void *)0xc000)  /* top of the total 
available address space */
+# define ADDRESS_SPACE_LIMIT  ((void *)0x8000)  /* top of the total 
available address space */
 # define USER_SPACE_LIMIT ((void *)0x7fff)  /* top of the user address 
space */
 #else
 static UINT page_shift;



Re: GetExitCodeProcess always returns 1

2006-03-24 Thread Igor Sysoev

On Thu, 23 Mar 2006, Igor Sysoev wrote:


3 years ago I reported that on FreeBSD Wine-20030508's
GetExitCodeProcess() always returns 1:
http://www.winehq.org/hypermail/wine-devel/2003/06/0100.html
This report included a small test case.

It was fixed by patch:
http://www.winehq.org/hypermail/wine-devel/2003/06/0381.html

and I used the patched Wine-20030508 to run MSVC,
OpenWatcom C, and Borland C in a command line.

Recenty I build Wine-0.9.10 from ports on FreeBSD 6.1, but
GetExitCodeProcess() still always returns 1.


The attached patch is the same patch but for Wine-0.9.10.
I've tested it on FreeBSD 6.1.


Igor Sysoev
http://sysoev.ru/en/--- server/process.cWed Mar 15 17:50:50 2006
+++ server/process.cFri Mar 24 21:44:28 2006
@@ -660,7 +660,7 @@ void kill_process( struct process *proce
 {
 struct thread *thread = LIST_ENTRY( ptr, struct thread, proc_entry );
 
-thread->exit_code = exit_code;
+if (exit_code) thread->exit_code = exit_code;
 if (thread != skip) kill_thread( thread, 1 );
 }
 }
--- server/request.cWed Mar 15 17:50:50 2006
+++ server/request.cFri Mar 24 21:45:38 2006
@@ -397,7 +397,7 @@ int receive_fd( struct process *process 
 if (ret > 0)
 fprintf( stderr, "Protocol error: process %p: partial recvmsg %d 
for fd\n",
  process, ret );
-kill_process( process, NULL, 1 );
+kill_process( process, NULL, (ret > 0) );
 }
 else
 {



Re: Could not run Digital Mars C/C++ Compiler under Wine

2006-03-24 Thread Igor Sysoev

On Thu, 23 Mar 2006, Eric Pouech wrote:


Igor Sysoev wrote:

When I try to run any program from Digital Mars C/C++ Compiler
http://www.digitalmars.com/download/freecompiler.html
under Wine 0.9.10 on FreeBSD 6.1, I always see the error:


this works fine here (on Linux)... may be a freebsd issue ?


Well, is the way to try to debug the problem ? Some debug log ?


Igor Sysoev
http://sysoev.ru/en/




Re: GetExitCodeProcess always returns 1

2006-03-23 Thread Igor Sysoev

On Thu, 23 Mar 2006, Mike McCormack wrote:


Igor Sysoev wrote:


It seems the tests try to use my old .wine for Wine-20030508.
I have renamed it and now I can run tests.
Here are some failed tests (I run make -i test to ignore failures):

../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p 
kernel32_test.e

xe.so change.c && touch change.ok
fixme:file:NtNotifyChangeDirectoryFile parameters ignored 0x0 0x0 1
change.c:287: Test failed: should be ready




Maybe Alexandre would accept patches to add a todo_wine_freebsd {} to the 
test suite where there's things that are hard to fix?


It seems that I am the first person who ever run the Wine regression tests
on FreeBSD :) Actually the test results did not bother me too much.
The wrong exit code simply means that I could not use the "make" under
Wine on FreeBSD: "make" stops after the first command.


Igor Sysoev
http://sysoev.ru/en/




Re: GetExitCodeProcess always returns 1

2006-03-23 Thread Igor Sysoev

On Thu, 23 Mar 2006, Mike McCormack wrote:


Igor Sysoev wrote:


Should Wine be already installed before run these tests ? I've tried:

make test
../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p 
kernel32_test.exe.so alloc.c && touch alloc.ok

Warning: the specified Windows directory L"c:\\windows" is not accessible.
Warning: the specified System directory L"c:\\windows\\system32" is not 
accessible.
Warning: could not find DOS drive for current working directory 
'/usr/ports/emulators/wine/work/wine-0.9.10/dlls/kernel/tests', starting in 
the Windows directory.
wine: could not load L"c:\\windows\\system32\\kernel32_test.exe.so": Module 
not found

*** Error code 126


No, it should work without Wine installed, and without a ~/.wine
Perhaps try running wine/tools/wineprefixcreate first?

bash-3.00$ rm -rf ~/.wine
bash-3.00$ cd dlls/kernel
bash-3.00$ make test
make[1]: Entering directory `/home/mike/wine/dlls/kernel/tests'
../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p 
kernel32_test.exe.so alloc.c && touch alloc.ok

wine: creating configuration directory '/home/mike/.wine'...
wine: '/home/mike/.wine' created successfully.
../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p 
kernel32_test.exe.so atom.c && touch atom.ok

...


It seems the tests try to use my old .wine for Wine-20030508.
I have renamed it and now I can run tests.
Here are some failed tests (I run make -i test to ignore failures):

../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p kernel32_test.e
xe.so change.c && touch change.ok
fixme:file:NtNotifyChangeDirectoryFile parameters ignored 0x0 0x0 1
change.c:287: Test failed: should be ready
change.c:290: Test failed: should be ready
change.c:302: Test failed: should be ready
change.c:305: Test failed: should be ready
fixme:file:NtNotifyChangeDirectoryFile parameters ignored 0x0 0x0 1

[  Here Wine-0.9.10 hangs and I have killed the process  ]

../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p kernel32_test.e
xe.so file.c && touch file.ok
file.c:246: Test failed: shouldn't be able to delete a readonly file
file.c:248: Test failed: couldn't change attributes on file
file.c:250: Test failed: now it should be possible to delete the file!
file.c:1271: Test failed: mapping should fail
file.c:1275: Test failed: mapping should fail
file.c:1281: Test failed: DeleteFile failed after map
file.c:1288: Test failed: open testfile.xxx failed
file.c:1290: Test failed: expected type disk got 0
*** Error code 8 (ignored)
../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p kernel32_test.e
xe.so mailslot.c && touch mailslot.ok
mailslot.c:195: Test failed: dwNext incorrect
mailslot.c:206: Test failed: dwNext incorrect
mailslot.c:218: Test failed: dwNext incorrect
mailslot.c:238: Test failed: dwNext incorrect
mailslot.c:255: Test succeeded inside todo block: dwMsgCount incorrect
mailslot.c:260: Test succeeded inside todo block: 3rd slot read failed
*** Error code 6 (ignored)
../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p kernel32_test.e
xe.so pipe.c && touch pipe.ok
pipe.c:134: Test succeeded inside todo block: peek3 got 21 bytes
pipe.c:146: Test succeeded inside todo block: pipe content 3b check
pipe.c:166: Test succeeded inside todo block: peek4 got 21 bytes
pipe.c:178: Test succeeded inside todo block: pipe content 4b check
pipe.c:138: Test failed: peek3 got 21 bytes
pipe.c:170: Test failed: peek4 got 21 bytes
pipe.c:215: Test failed: peek5 got 21 bytes
pipe.c:246: Test failed: peek6 got 21 bytes
*** Error code 8 (ignored)
../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p kernel32_test.e
xe.so process.c && touch process.ok
err:wineconsole:WCUSER_SetFont wrong font
process.c:1246: Test failed: ExitCode:value expected 1, but got 123
*** Error code 1 (ignored)


The last message is strange:
process.c:1246: Test failed: ExitCode:value expected 1, but got 123

The child should return 123 and this value should be expected.


Igor Sysoev
http://sysoev.ru/en/




Re: GetExitCodeProcess always returns 1

2006-03-23 Thread Igor Sysoev

On Thu, 23 Mar 2006, Mike McCormack wrote:


Igor Sysoev wrote:


Well, but then I could not build Wine port under FreeBSD: as I understand
the port runs something like
./configure && make depend && make && make install

But I have built and installed Wine successfully.


Sorry, misunderstood you.  The tests don't run on every build, you have to 
run them explicitly.


Try running "make test", or "cd dlls/kernel; make test"


Should Wine be already installed before run these tests ? I've tried:

make test
../../../tools/runtest -q -P wine -M kernel32.dll -T ../../.. -p kernel32_test.exe.so 
alloc.c && touch alloc.ok
Warning: the specified Windows directory L"c:\\windows" is not accessible.
Warning: the specified System directory L"c:\\windows\\system32" is not 
accessible.
Warning: could not find DOS drive for current working directory 
'/usr/ports/emulators/wine/work/wine-0.9.10/dlls/kernel/tests', starting in the 
Windows directory.
wine: could not load L"c:\\windows\\system32\\kernel32_test.exe.so": Module not 
found
*** Error code 126


Igor Sysoev
http://sysoev.ru/en/




Re: GetExitCodeProcess always returns 1

2006-03-22 Thread Igor Sysoev

On Thu, 23 Mar 2006, Mike McCormack wrote:


Igor Sysoev wrote:


It seems that dlls/kernel/tests/process.c already has such test:
test_ExitCode(). Does it run while usual build ?


Yes, it is run after commits, so it's likely that it's only broken on 
FreeBSD.


Well, but then I could not build Wine port under FreeBSD: as I understand
the port runs something like
./configure && make depend && make && make install

But I have built and installed Wine successfully.


Igor Sysoev
http://sysoev.ru/en/




Re: GetExitCodeProcess always returns 1

2006-03-22 Thread Igor Sysoev

On Thu, 23 Mar 2006, Mike McCormack wrote:


Igor Sysoev wrote:


3 years ago I reported that on FreeBSD Wine-20030508's
GetExitCodeProcess() always returns 1:
http://www.winehq.org/hypermail/wine-devel/2003/06/0100.html
This report included a small test case.

It was fixed by patch:
http://www.winehq.org/hypermail/wine-devel/2003/06/0381.html

and I used the patched Wine-20030508 to run MSVC,
OpenWatcom C, and Borland C in a command line.

Recenty I build Wine-0.9.10 from ports on FreeBSD 6.1, but
GetExitCodeProcess() still always returns 1.


If you turn your test case into a Wine regression test, and add it to 
dlls/kernel/tests/process.c, then it won't be broken on Linux, and therefore 
there's a better chance it won't break on FreeBSD.


It's also up to FreeBSD users to make sure Wine doesn't break on FreeBSD by 
making the test cases pass and testing them regularly to find regressions.


It seems that dlls/kernel/tests/process.c already has such test:
test_ExitCode(). Does it run while usual build ?


Igor Sysoev
http://sysoev.ru/en/




ilink32 hungs under Wine 0.9.10

2006-03-22 Thread Igor Sysoev

When I try to link with ilink32.exe from C++ Builder Compiler and
Command Line Tools ( http://appdb.winehq.org/appview.php?versionId=1423 )
ilink32 hangs.

I saw comment on http://appdb.winehq.org/appview.php?versionId=1423
about changing ADDRESS_SPACE_LIMIT. Could be applied to 0.9.10 ?


Igor Sysoev
http://sysoev.ru/en/




Could not run Digital Mars C/C++ Compiler under Wine

2006-03-22 Thread Igor Sysoev

When I try to run any program from Digital Mars C/C++ Compiler
http://www.digitalmars.com/download/freecompiler.html
under Wine 0.9.10 on FreeBSD 6.1, I always see the error:

C:\dmc\bin>dmc 
wine: Unhandled stack overflow at address 0x405620 (thread 0017), starting debugger...

WineDbg starting on pid 0x16
Couldn't initiate DbgHelp
Unhandled exception: stack overflow in 32-bit code (0x00405620).
file_set_error: Bad address
file_set_error: Bad address
Register dump:
 CS:0033 SS:003b DS:003b ES:003b FS:1007 GS:001b
 EIP:00405620 ESP:0035ff6c EBP:0035ffe8 EFLAGS:00010216(   - 00  -RIAP1)
 EAX: EBX:9c297064 ECX:0035ff1c EDX:
 ESI:9c099460 EDI:00405620
Stack dump:
0x0035ff6c:  9c20b210 9c099460  
0x0035ff7c:    9c1d1ff8 9c1e47ec
0x0035ff8c:  9c20b1a8 9c297064 0035ff6c 0035ffe8
0x0035ff9c:  0011 1000 127f 
0x0035ffac:     0001
0x0035ffbc:     
0200: sel=1007 base=0011 limit=1fff 32-bit rw-
Backtrace:
=>1 0x00405620 (0x00405620)
file_set_error: Bad address
0x00405620: -- no code accessible --
Modules:
Module  Address Debug info  Name (0 modules)
Threads:
process  tid  prio (all id:s are in hex)
0016 (D) C:\dmc\bin\dmc.exe
00170 <==
0008
00090


Igor Sysoev
http://sysoev.ru/en/




GetExitCodeProcess always returns 1

2006-03-22 Thread Igor Sysoev

3 years ago I reported that on FreeBSD Wine-20030508's
GetExitCodeProcess() always returns 1:
http://www.winehq.org/hypermail/wine-devel/2003/06/0100.html
This report included a small test case.

It was fixed by patch:
http://www.winehq.org/hypermail/wine-devel/2003/06/0381.html

and I used the patched Wine-20030508 to run MSVC,
OpenWatcom C, and Borland C in a command line.

Recenty I build Wine-0.9.10 from ports on FreeBSD 6.1, but
GetExitCodeProcess() still always returns 1.


Igor Sysoev
http://sysoev.ru/en/




GetExitCodeProcess always returns 1

2005-03-31 Thread Igor Sysoev
2 years ago I reported that on FreeBSD Wine-20030508's GetExitCodeProcess()
always returns 1:
http://www.winehq.org/hypermail/wine-devel/2003/06/0100.html
It was fixed by patch:
http://www.winehq.org/hypermail/wine-devel/2003/06/0381.html
and I used the patched Wine-20030508 all the time to run MSVC,
OpenWatcom C, and Borland C in a command line.
However, when I try to run dmc.exe, sc.exe, or make.exe from
Digital Mars C/C++ Compiler, I always see the message:
wine: Unhandled exception (thread 0009), starting debugger...
I build Wine-20050310, but it has the same two problems:
1) GetExitCodeProcess() always returns 1 on FreeBSD 5.3,
2) and wine could not run Digital Mars C/C++ Compiler.
Digital Mars C/C++ Compiler is could be downloaded here:
http://www.digitalmars.com/download/freecompiler.html
Igor Sysoev
http://sysoev.ru/en/