I finally was able to figure out how to attach the debugger to determine why services.exe did not start and I can clearly see now that the oem_table is NULL. It should have been set by LOCALE_Init() when called from kernel32's init function. However, if you look at the stack trace here, Wine hasn't even gotten to that point. As part of NTDLL's init, it is setting the DLL callback function which causes it to invoke the callback right away..as seen in the stack trace, it is making a function call which requires the oem_table to be set.
Does anyone have any ideas why this is happening? Why doesn't it happen when other programs such as wineboot and explorer.exe are started? It only happens with services.exe. I am using Wine 1.4.2
Roger R. Cruz
Program received signal SIGSEGV, Segmentation fault.
0x4003c304 in wine_cp_wcstombs (table=0x0, flags=0x0, src=0xbecc5648,
srclen=0xc, dst=0x0, dstlen=0x0, defchar=0x0, used=0x0)
at /home/rcruz/sandbox/wine.git/libs/wine/wctomb.c:447
447 if (table->info.char_size == 1)
#0 0x4003c304 in wine_cp_wcstombs (table=0x0, flags=0x0, src=0xbecc5648,
srclen=0xc, dst=0x0, dstlen=0x0, defchar=0x0, used=0x0)
at /home/rcruz/sandbox/wine.git/libs/wine/wctomb.c:447
#1 0x7bc76f94 in RtlUnicodeStringToOemSize (str=0xbecc5688)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/rtlstr.c:1356
#2 0x7bc76a18 in RtlUpcaseUnicodeStringToCountedOemString (oem=0xbecc56b0,
uni=0xbecc5784, doalloc=0x0)
at
/home/rcruz/sandbox/wine.git/dlls/ntdll/rtlstr.c:1161
#3 0x7bc65604 in RtlIsNameLegalDOS8Dot3 (unicode=0xbecc5784, oem=0xbecc56b0,
spaces=0xbecc5783 "{\030")
at /home/rcruz/sandbox/wine.git/dlls/ntdll/path.c:888
#4 0x7bc361bc in find_file_in_dir (
unix_name=0x42952ae0 "/data/winehome/dosdevices/c:/windows/system32", pos=0x36, name=0x42952aa8, length=0xc, check_case=0x0, is_win_dir=0x0)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/directory.c:2125
#5 0x7bc3856c in lookup_unix_name (name=0x42952aa8, name_len=0x0,
buffer=0xbecc5cac, unix_len=0x145, pos=0x35, disposition=0x1,
check_case=0x0)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/directory.c:2753
#6 0x7bc393b4 in wine_nt_to_unix_file_name (nameW=0xbecc5ed4,
unix_name_ret=0xbecc5e5c,
disposition=0x1, check_case=0x0)
---Type <return> to continue, or q <return> to quit---
at /home/rcruz/sandbox/wine.git/dlls/ntdll/directory.c:2978
#7 0x7bc3888c in nt_to_unix_file_name_attr (attr=0xbecc5e90,
unix_name_ret=0xbecc5e5c, disposition=0x1)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/directory.c:2817
#8 0x7bc43120 in NtQueryAttributesFile (attr=0xbecc5e90, info=0xbecc5ea8)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/file.c:2250
#9 0x7bc397b8 in RtlDoesFileExists_U (file_name=0x42952a20)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/directory.c:3040
#10 0x7bc6412c in RtlDosSearchPath_U (paths=0x42a704ba, search=0xbecc62e4,
ext=0x0, buffer_size=0x40, buffer=0xbecc60c0, file_part=0xbecc5fc4)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/path.c:490
#11
0x7bc54848 in find_dll_file (load_path=0x42a704ba, libname=0xbecc62e4,
filename=0xbecc60c0, size=0xbecc60bc, pwm=0xbecc6330, handle=0xbecc60b8)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/loader.c:2251
#12 0x7bc550c8 in load_dll (load_path=0x42a704ba, libname=0xbecc62e4,
flags=0x0, pwm=0xbecc6330)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/loader.c:2354
#13 0x7bc4f1c0 in import_dll (module=0x7bc10000, descr=0x7bcca5dc,
load_path=0x42a704ba)
at /home/rcruz/sandbox/wine.git/dlls/ntdll/loader.c:807
#14 0x7bc502d0 in fixup_imports (wm=0x42952970, load_path=0x42a704ba)
---Type <return> to continue, or q <return> to quit---
at /home/rcruz/sandbox/wine.git/dlls/ntdll/loader.c:1057
#15 0x7bc52c34 in load_builtin_callback (module=0x7bc10000,
filename=0x7bca58b0 "ntdll.dll")
at /home/rcruz/sandbox/wine.git/dlls/ntdll/loader.c:1836
#16 0x40034008 in wine_dll_set_callback (
load=0x7bc527e8 <load_builtin_callback>)
at /home/rcruz/sandbox/wine.git/libs/wine/loader.c:537
#17 0x7bc5874c in __wine_process_init ()
at /home/rcruz/sandbox/wine.git/dlls/ntdll/loader.c:3353
#18 0x40034694 in wine_init (argc=0x2, argv=0xbecc6b84, error=0xbecc6620 "",
error_size=0x400)
at /home/rcruz/sandbox/wine.git/libs/wine/loader.c:831
#19 0x00008870 in main (argc=0x2, argv=0xbecc6b84)
at /home/rcruz/sandbox/wine.git/loader/main.c:230
On 6 November 2012 15:41, Aric Stewart <aric(a)codeweavers.com> wrote:
>
> This allows the calling program to properly get the return codes from the messages when they need them.
> Also prevent all of the calls for IME messages in that windproc from falling back through to DefWindowProc.
>
> for bug 32101
Can we have some tests for this, please? We already have a couple of
known deadlocks involving imm32 message processing, and based on the
amount of tests I'm not sure most of it is based on anything other
than "It seemed like a good idea at the time.".
On Mon, Nov 19, 2012 at 10:03 PM, Ann and Jason Edmeades
<jason(a)edmeades.me.uk> wrote:
> Existance of external environment variables should not cause
> make test to fail, but it can cause extra lines in some of the
> set commands if the test does not first clear them out.
>
> [Fixes bug 32087]
> diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
> index a1a3c4a..3efcd2a 100644
> --- a/programs/cmd/tests/test_builtins.cmd
> +++ b/programs/cmd/tests/test_builtins.cmd
> @@ -239,6 +239,9 @@ set FOO=
>
> echo ------------ Testing 'set' ------------
> call :setError 0
> +rem Remove any FOO* BA* environment variables from shell before proceeding
> +for /f "delims==" %%i in ('set ba') do set %%i=
> +for /f "delims==" %%i in ('set foo') do set %%i=
> set FOOBAR 2> nul > nul
> echo %ErrorLevel%
> set FOOBAR = baz
IMHO it might be better to use variable names like WINE_xxx for tests
involving "enumerations" to avoid needlessly altering the environment.
(not that BAR, FOO or FOOBAR are likely to be already used environment
variables)
Frédéric
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at
http://testbot.winehq.org/JobDetails.pl?Key=23016
Your paranoid android.
=== WNT4WSSP6 (32 bit) ===
batch.c:312: Test failed: unexpected char 0x53 position 0 in line 419 (got 'Skipping file size check on NT4', wanted 'Passed: file size check on a.a [7]')
batch.c:312: Test failed: unexpected char 0x53 position 0 in line 420 (got 'Skipping file size check on NT4', wanted 'Passed: file size check on b.b [8]')
batch.c:312: Test failed: unexpected char 0x53 position 0 in line 421 (got 'Skipping file size check on NT4', wanted 'Passed: file size check on a.a [7]')
batch.c:312: Test failed: unexpected char 0x53 position 0 in line 422 (got 'Skipping file size check on NT4', wanted 'Passed: file size check on b.b [8]')
batch.c:312: Test failed: unexpected char 0x53 position 0 in line 423 (got 'Skipping file size check on NT4', wanted 'Passed: file size check on a.a [7]')
batch.c:312: Test failed: unexpected char 0x53 position 0 in line 424 (got 'Skipping file size check on NT4', wanted 'Passed: file size check on subdir\a.a [8]')
batch.c:312: Test failed: unexpected char 0x68 position 0 in line 866 (got 'h=%h i=a j=b k=c l=e m= o=%o', wanted 'h=%h i=a j=b k=c l=e m=%m o=%o')
batch.c:312: Test failed: unexpected char 0x68 position 0 in line 868 (got 'h=%h i=a j=b k=c l=d e f g m= n=%n o=%o', wanted 'h=%h i=a j=b k=c l=d e f g m=%m n=%n o=%o')
batch.c:312: Test failed: unexpected char 0x68 position 0 in line 869 (got 'h=%h i=a j=c k= l= m= n=%n o=%o', wanted 'h=%h i=a j=c k= l= m=%m n=%n o=%o')
batch.c:312: Test failed: unexpected char 0x68 position 0 in line 870 (got 'h=%h i=b j=c k= l= m= n=%n o=%o', wanted 'h=%h i=b j=c k= l= m=%m n=%n o=%o')
batch.c:312: Test failed: unexpected char 0x68 position 0 in line 871 (got 'h=%h i=b j=c k= l= m= n=%n o=%o', wanted 'h=%h i=b j=c k= l= m=%m n=%n o=%o')