etc:users:jcmvbkbc:wine_mcbc
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| etc:users:jcmvbkbc:wine_mcbc [2007/10/12 02:00] – создано jcmvbkbc | etc:users:jcmvbkbc:wine_mcbc [2016/08/08 20:53] (current) – ↷ Page moved from users:jcmvbkbc:wine_mcbc to etc:users:jcmvbkbc:wine_mcbc kel | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | == Начало истории для меня == | + | ====== Wine под МСВС ====== |
| + | ===== Начало истории для меня | ||
| http:// | http:// | ||
| - | == Патчи для компиляции wine в МСВС 3.0 изм.13 == | ||
| - | == Проблемы времени выполнения == | ||
| - | wine-preloader падает с segmentation fault после загрузки кода приложения, | ||
| + | ===== Проблемы времени выполнения ===== | ||
| + | |||
| + | ==== Первоначальный запуск wine неполностью инициализирует ~/.wine ==== | ||
| + | |||
| + | Симптомы: | ||
| + | < | ||
| + | $ wine | ||
| + | WINE@Etersoft 1.0.8 | ||
| + | First running... Using WINEPREFIX=/ | ||
| + | Creating default file tree... | ||
| + | / | ||
| + | / | ||
| + | Building local environment... | ||
| + | Device ' | ||
| + | ... | ||
| + | Device ' | ||
| + | / | ||
| + | WINE@Etersoft has been configured for the first time. | ||
| + | Use / | ||
| + | Copy your program into and install it. | ||
| + | </ | ||
| + | В результате каталог c: | ||
| + | Однако, | ||
| + | < | ||
| + | $ wine-kthread ./1cv7s.exe | ||
| + | wine: Unhandled page fault on read access to 0x00000000 at address 0x402586f8 (thread 0009), starting debugger... | ||
| + | err: | ||
| + | Read the Wine Developers Guide on how to set up winedbg or another debugger | ||
| + | </ | ||
| + | |||
| + | ==== wine-preloader загружает wine-kthread и падает с segmentation fault при попытке начать его исполнение ==== | ||
| + | |||
| + | Ход разборок: | ||
| + | < | ||
| + | gdb --args / | ||
| + | </ | ||
| + | < | ||
| + | (gdb) run | ||
| + | ... | ||
| + | jumping to 600019c0 | ||
| + | |||
| + | Program received signal SIGSEGV, Segmentation fault. | ||
| + | 0x60005240 in ?? () | ||
| + | </ | ||
| + | disassemble не работает, | ||
| + | < | ||
| + | (gdb) x/64i $eip-32 | ||
| + | 0x60005220: | ||
| + | 0x60005225: | ||
| + | 0x60005228: | ||
| + | 0x6000522e: | ||
| + | 0x60005230: | ||
| + | 0x60005233: | ||
| + | 0x60005235: | ||
| + | 0x60005237: | ||
| + | 0x6000523d: | ||
| + | 0x60005240: | ||
| + | </ | ||
| + | < | ||
| + | (gdb) info registers | ||
| + | eax 0x1000 | ||
| + | ecx 0x802 2050 | ||
| + | edx 0x1000 | ||
| + | ebx 0x60013868 | ||
| + | esp 0xbfffdf58 | ||
| + | ebp 0xbffff074 | ||
| + | esi 0x63f2b | ||
| + | edi 0x0 0 | ||
| + | eip 0x60005240 | ||
| + | eflags | ||
| + | cs | ||
| + | ss | ||
| + | ds | ||
| + | es | ||
| + | fs | ||
| + | gs | ||
| + | </ | ||
| + | получается, | ||
| + | |||
| + | Написал тест: | ||
| + | < | ||
| + | void f(int i) | ||
| + | { | ||
| + | int r[4096]; | ||
| + | f(i+1); | ||
| + | } | ||
| + | |||
| + | int main() | ||
| + | { | ||
| + | f(0); | ||
| + | } | ||
| + | </ | ||
| + | падает в одном и том же (по стеку и по i) месте, как при обычном запуске, | ||
| + | |||
| + | Нашел **настоящую** разницу: | ||
| + | < | ||
| + | ... | ||
| + | stat("/ | ||
| + | old_mmap(0x7ffe0000, | ||
| + | old_mmap(0x1000, | ||
| + | old_mmap(NULL, | ||
| + | open("/ | ||
| + | ... | ||
| + | </ | ||
| + | Когда же через wine-preloader: | ||
| + | < | ||
| + | ... | ||
| + | stat("/ | ||
| + | old_mmap(0x7ffe0000, | ||
| + | old_mmap(0x7ffe0000, | ||
| + | old_mmap(0x7ffe0000, | ||
| + | munmap(0x6021a000, | ||
| + | old_mmap(0x7ffe0000, | ||
| + | munmap(0x6021a000, | ||
| + | old_mmap(0x7ffe0000, | ||
| + | ... | ||
| + | old_mmap(0x87fe0000, | ||
| + | old_mmap(0x8ffe0000, | ||
| + | old_mmap(0x8ffe0000, | ||
| + | ... | ||
| + | old_mmap(0xbffd0000, | ||
| + | old_mmap(0x1000, | ||
| + | brk(0x7c004000) | ||
| + | open("/ | ||
| + | fstat(4, {st_mode=S_IFREG|0755, | ||
| + | --- SIGSEGV (Segmentation fault) @ 0 (0) --- | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | {{tag> | ||
etc/users/jcmvbkbc/wine_mcbc.1192140044.txt.gz · Last modified: 2008/01/03 02:32 (external edit)