Summary: | Не запускается arj | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Vitaly Lipatov <lav> |
Component: | Общее | Assignee: | BUGS@Etersoft <bugs> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P5 | ||
Version: | 1.0.8 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 442 | ||
Bug Blocks: | 777 |
Description
Vitaly Lipatov
2007-09-06 22:17:27 MSD
Добавляю зависимость на багу 442, которая была о том же. Надо наверное что-то сделать, чтобы зависания не было. Вообще возможно что надо, как и в Windows, все консольные программы запускать в консоли. Как минимум, нужно воспроизвести ситуацию с ReadConsoleInput http://api.farmanager.com/ru/winapi/readconsoleinput.html Думаю, полный цикл вот такой (на 22.12.07 зацикливается): 000b:trace:int:DOSVM_Loop waiting for action 000b:Call user32.MsgWaitForMultipleObjects(00000002,0034f688,00000000,ffffffff,000004ff) ret=7e88ed5c 000b: set_queue_mask( wake_mask=00000000, changed_mask=000004ff, skip_wait=0 ) 000b: set_queue_mask() = 0 { wake_bits=00000108, changed_bits=00000108 } 000b:Call winex11.drv.MsgWaitForMultipleObjectsEx(00000003,0034f3d8,ffffffff,000004ff,00000000) ret=7ee8d30b 000b:trace:sync:WaitForMultipleObjectsEx *handle=4, timeout=-1 000b: select( flags=4, cookie=0x34f0f0, signal=(nil), prev_apc=(nil), timeout=infinite, result={}, handles={0x4,0x80,0x84} ) 000b: select() = 0 { apc_handle=(nil), timeout=infinite, call={APC_NONE} } 000b:Ret winex11.drv.MsgWaitForMultipleObjectsEx() retval=00000000 ret=7ee8d30b 000b:Ret user32.MsgWaitForMultipleObjects() retval=00000000 ret=7e88ed5c 000b:Call KERNEL32.GetStdHandle(fffffff6) ret=7e88e741 000b:Ret KERNEL32.GetStdHandle() retval=00000004 ret=7e88e741 000b:Call KERNEL32.ReadConsoleInputA(00000004,0034f600,00000001,0034f614) ret=7e88e756 000b: get_console_wait_event( ) 000b: get_console_wait_event() = INVALID_PARAMETER { handle=(nil) } 000b: get_handle_fd( handle=(nil) ) 000b: get_handle_fd() = INVALID_HANDLE { type=0, removable=0, access=00000000, options=00000000 } 000b:trace:sync:WaitForSingleObject filetype=0 000b:trace:sync:WaitForMultipleObjectsEx *handle=0, timeout=-1 000b: select( flags=4, cookie=0x34f220, signal=(nil), prev_apc=(nil), timeout=infinite, result={}, handles={(nil)} ) 000b: select() = INVALID_HANDLE { apc_handle=(nil), timeout=infinite, call={APC_NONE} } 000b:trace:sync:WaitForSingleObject handle=0, ret=ffffffff 000b:Ret KERNEL32.ReadConsoleInputA() retval=00000000 ret=7e88e756 Проблема связана с использованием ReadConsoleInput, который не может работать без wineconsole. В багу http://bugs.winehq.org/show_bug.cgi?id=9178 есть патч, устраняющий проблему. 32-битная версия работает без проблем: $ wine arj.exe ARJ 3.10a (ARJ32) Copyright (c) 1990-2002 ARJ Software, Inc. May 31 2002 Registered to [Tagir R#1234] Long filenames enabled Processing archive: C:\arj.exe Archive created: 2002-05-31 17:11:16, modified: 2002-05-31 17:11:16 List of frequently used commands and switches. Type ARJ32 -? for more help. 16-битна тоже: $ wine ARJ.EXE ARJ 2.41 Copyright (c) 1990-93 Robert K Jung. Jun 03 1993 All Rights Reserved. U.S. Patent No. 5,140,321 and patent pending. *** This SHAREWARE program is NOT REGISTERED for use in a business, commercial, *** government, or institutional environment except for evaluation purposes. Архиваторы для тестирования здесь: /var/ftp/pvt/Windows/Compressors |