2014-02-15 1 views
2

Я сделал fcgi-isapi мост, который я компилирую с помощью wineg++ (ключевое слово winelib). Он работает с чистым расширением Isapi Win32, используя LoadLibrary/GetProcAddress. Это отлично подходит для простой демо-версии isapi dll, но не для более сложной, где виноват где-то внутри dll. WINEDEBUG=+olerelay,+storage,+relay дает мне следующий вывод:Ошибка вина: приложение попыталось создать окно, но драйвер не был загружен

0009:Call KERNEL32.InterlockedIncrement(00000150) ret=1001eebe 
0009:Call KERNEL32.UnhandledExceptionFilter(0033f428) ret=7bc8e2f5 
wine: Unhandled page fault on write access to 0x00000150 at address 0x7b8716bd (thread 0009), starting debugger... 
Application tried to create a window, but no driver could be loaded. 
Make sure that your X server is running and that $DISPLAY is set correctly. 
couldn't load main module (0) 
0009:Ret KERNEL32.UnhandledExceptionFilter() retval=00000000 ret=7bc8e2f5 
Unhandled exception: page fault on write access to 0x00000150 in 32-bit code (0x7b8716bd). 
Register dump: 
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b 
EIP:7b8716bd ESP:0033f8cc EBP:0033f8e0 EFLAGS:00010246( R- -- I Z- -P-) 
EAX:00000001 EBX:00000000 ECX:00000000 EDX:00000150 
ESI:0033f8fc EDI:0033f8d4 
Stack dump: 
0x0033f8cc: 7bc6592e 00000150 00000000 7ca3c7d4 
0x0033f8dc: 00000000 0033fdc8 7b823b61 7b8be9d4 
0x0033f8ec: 000102d1 0033f8f4 1001eebe 00000150 
0x0033f8fc: 7ef82158 7ca3c7d0 f775d2c8 0033faac 
0x0033f90c: 7bcd7208 00000000 f775c2b1 0000000f 
0x0033f91c: 7bcbbed8 1004e06c 00000002 00115760 
Backtrace: 
=>0 0x7b8716bd in kernel32 (+0x616bd) (0x0033f8e0) 
    1 0x7b823b61 in kernel32 (+0x13b60) (0x0033fdc8) 
    2 0x7ef813d0 (0x0033fe18) 
    3 0x7ef815f5 (0x0033fe60) 
    4 0x7b85e84c in kernel32 (+0x4e84b) (0x0033fe78) 
    5 0x7b85f903 in kernel32 (+0x4f902) (0x0033feb8) 
    6 0x7bc77600 (0x0033fed8) 
    7 0x7bc7a59d (0x0033ffa8) 
    8 0x7bc775de (0x0033ffc8) 
    9 0x7bc4c65e (0x0033ffe8) 

(протестирована с Wine 1.4.1 и 1.6.2, и дают точно такой же вывод, (только некоторые разные числа)

Мои вопросы:

  1. Что происходит на самом деле и как я могу выяснить причину ошибки ошибки страницы?
  2. Вино пытается запустить графический отладчик или сама DLL пытается создать объект X11? И почему это не удается? РУНН в 32-битной среде chroot на 64-битном хосте, но я позвонил xhost + и протестировал X11 с помощью xlogo, gedit и даже с помощью приложения Win32 GUI с использованием Wine. Кажется, не проблема X11.

Update: вот ссылка на источник: http://gist.github.com/daald/5f37de8352e1c8ca62db

ответ

0

В соответствии с этим post, wine предназначен для графических программ. Чтобы запустить вашу программу без графического интерфейса, используйте вместо этого wineconsole, например.

wineconsole fastcgi-to-isapi.exe 

См. Text mode programs (CUI: Console User Interface).

Смежные вопросы