В программе обнаружена серьезная ошибка wine
5.1. Что делать, если программа не работает?
Бывают случаи, когда вы перепробовали все, чтобы заставить эту проклятую программу заработать на данной версии Wine. Не расстраивайтесь, мы всегда здесь, чтобы помочь вам. (другими словами: "Сколько заплатите?")
5.1.1. Проверьте конфигурацию своей Wine
Посмотрите вывод команды $ wine --version, чтобы убедиться, что у вас новейшая версия Wine. Запустите winecfg и посмотрите на установки, чтобы убедиться, что они выглядят нормально. Проверьте ~/.wine/dosdevices, чтобы убедиться что c: указывает куда нужно.
5.1.2. Попробуйте разные версии Windows
5.1.3. Используйте различные пути (paths) для запуска
5.1.4. Поэкспериментируйте с настройкой DLL
Запустите WINEDEBUG=+loaddll, чтобы выяснить, какие DLL используются, и являются ли они "родными" или встроенными. Затем убедитесь, что у вас установлены правильные "родные" файлы библиотек в вашей директории C:\windows\system и поэкспериментируйте настройками очередности загрузки DLL в командной строке, либо в файле конфигурации.
5.1.5. Проверьте рабочее окружение!
Еще идея: не может ли рабочее окружение Wine быть испорченным? Убедитесь, что все в порядке с пакетами, от которых зависит работа Wine (gcc, glibc, X libraries, OpenGL (!), . ).
5.1.6. Используйте другой режим графического интерфейса
Проинструктируйте Wine посредством конфигурационного файла использовать либо desktop mode (режим рабочего стола), либо managed mode (управляемый режим), либо уродливый "нормальный" (normal) режим. Это тоже может помочь.
5.1.7. Проверьте приложение!
Может быть, ваше приложение имеет защиту от копирования? Многие виды таких защит пока не работают под Wine. Некоторые, возможно, заработают в будущем. (Уровень CD-ROM до сих пор не полнофункционален).
Идите на сайт GameCopyWorld и попытайтесь найти хороший крэк, который позволит снять защиту от копирования. Я надеюсь, что у вас легальная копия программы, но кто знает. :-)
5.1.8. Измените окружение Wine
Запуск приложения при наличии Windows раздела может драматически отличаться от такового при отсутствии Windows раздела. Настройте Wine на действия, противоположные тому, что были обычно. Также установите DCOM98 или DCOM95. Это может быть очень полезно.
5.1.9. Переконфигурируйте Wine
Иногда процесс инсталляции Wine изменяется, и новые версии Wine считаются с этими изменениями. Это особенно вероятно, если ваша установка произведена давно. Переименуйте директорию ~/.wine с целью резервного копирования. Запустите процесс установки, рекомендованный для вашей версии Wine, чтобы создать новую конфигурацию. Для сравнения используйте старую директорию ~/.wine. Для установок Wine из исходников применяйте для конфигурации Wine скрипт tools/wineinstall от имени пользователя. Это вполне безопасная операция. Позже вы сможете удалить новую директорию ~/.wine, и переименовать обратно старую.
5.1.10. Следите за сторонней информацией
Весьма возможно, что кто-то уже делал то, что вы пытаетесь проделать сейчас. Вам могут помочь следующие ресурсы:
Просмотрите WineHQ's Application Database в поисках подсказок, относящихся к вашей программе. Если ваша конкретная версия программы отсутствует в списке, просмотрите сходные версии, возможно там достаточно информации.
Frank's Corner имеет список приложений с детальными инструкциями по их установке. Дальнейшая помощь может найтись на форумах пользователей.
Может помочь Google , если уметь им пользоваться. Полезно бывает искать в Google Groups , конкретно в группе comp.emulators.ms-windows.wine
Если ваша программа требует Visual Basic Runtime Environment, то вы можете загрузить его с этого сайта Микрософт .
Рассылочный лист Wine также может помочь, особенно wine-users. Лист wine-devel может быть полезен в зависимости от типа ваших затруднений. если вы пишете в wine-devel, то готовьтесь проделать некоторую работу по диагностике проблемы. Читайте следующий раздел, чтобы узнать, как определить источник ваших трудностей.
Если все усилия напрасны, стоит просмотреть коммерческие версии Wine на предмет поддержки вашего приложения.
5.1.11. Ищите причину!
Следующим шагом, который стоит предпринять, является поиск причины проблемы. Спектр возможных причин весьма широк - от простой ошибки в конфигурации до полной неработоспособности Wine. Следующий раздел описывает, как создать файл с отчетом об ошибке, и как начать искать неисправность. Отладочные возможности Wine описываются в Wine Developers Guide (руководство для разработчиков).
5.2. Как послать отчет об ошибке.
Пожалуйста, сообщайте об ошибках и сопутствующую информацию на сайт Wine Bugzilla . Пожалуйста, просматривайте базу данных Bugzilla, чтобы выяснить, не было ли уже отчетов по данной проблеме. Если таковые уже были, пожалуйста, добавляйте вашу информацию к первоначальному отчету.
5.2.1 Отчеты об ошибках
Вот несколько простых советов, как сделать ваш отчет более содержательным, и тем повысить вероятность ответа и исправления ошибки:
1. Включите как можно больше информации, относящейся к делу.
Это означает, что нам нужно больше информации, чем просто: "Мой MS Word "падает", когда бы я его не запускал. Вы не знаете, почему?". Добавьте, как минимум, следующую информацию:
-
Какую версию Wine вы используете (команда: wine --version)
2. Прогоните программу с переменной окружения WINEDEBUG. Например, WINEDEBUG=+relay wine sol.exe
Это приведет к выводу на консоль дополнительной информации, которая может быть полезна при отладке программы. Также это замедлит воспроизводство программы. Бывают случаи, когда ошибка, по-видимому, исчезала при использовании опции +relay. Укажете это в вашем отчете.
5.2.2. Аварийное завершение программы
Если Wine аварийно отказывает во время выполнения вашей программы, нам важно иметь информацию об этом, чтобы попытаться понять причину отказа. Отчет может занимать много места (несколько Мб), но все же лучше сохранить его в файле. Когда появится приглашение Wine-dbg> , напечатайте quit.
Вы можете попробовать +relay,+snoop вместо +relay, но, пожалуйста, помните, что +snoop довольно нестабилен и часто вызывает отказ раньше, чем просто +relay!! Отчет с отказом в коде +snoop в большинстве случаев бесполезен! Можно также подключать другие параметры, в зависимости от природы проблемы, которую вы исследуете. Для получения полного списка параметров смотрите man-страницу к Wine.
Для того чтобы вывести запись с историей событий (трассировочный лог), используйте один из следующих методов:
5.2.2.1 Простой путь
1. Этот метод позволяет даже полному новичку получить качественный трассировочный лог событий, приведших к аварийному завершению программы.
Чтобы воспользоваться этим методом, на вашем компьютере должен быть установлен язык программирования perl. Чтобы узнать, есть ли он у вас, наберите команду: which perl. Если ответ нечто вроде: /usr/bin/perl, то вы можете работать. В противном случае переходите к разделу "Трудный путь". Если вы не уверены, все-таки проделайте работу. Когда вы попытаетесь запустить скрипт, то станет весьма очевидно, если у вас не установлен perl.
2. Смените директорию на /путь-к-wine>/tools.
3. Наберите: ./bug_report.pl и следуйте указаниям.
4. Пошлите отчет на сайт Wine Bugzilla . Пожалуйста, просмотрите базу данных сайта, чтобы убедиться, что ваша проблема еще не зафиксирована, прежде чем отправлять отчет. Составьте детальное описание проблемы с сопутствующей информацией. Прикрепите "Прекрасно оформленный трассировочный лог" к письму. Не вставляйте лог в текст отчета - он слишком велик. Сохраняйте полную копию трассировочного лога, на случай, если он понадобится разработчикам Wine.
5.2.2.2. Трудный путь
Чаще всего только последние 100 (или около того) строчек трассировочного лога нужны, чтобы выяснить, где программа аварийно завершилась. Для того чтобы получить эти последние 100 строк, мы должны проделать следующее:
2. Отделить последние 100 строк в другой файл при помощи команды: tail.
Это можно проделать одним из следующих способов.
Для всех шеллов (оболочек):
$ echo quit | WINEDEBUG=+relay wine [other_options] program_name >& filename.out; $ tail -n 100 filename.out > report_file
tcsh и другие csh-подобные шеллы:
$ WINEDEBUG=+relay wine [other_options] program_name |& tee filename.out; $ tail -n 100 filename.out > report_file
bash и другие sh-подобные шеллы:
$ WINEDEBUG=+relay wine [other_options] program_name 2>&1 | tee filename.out; $ tail -n 100 filename.out > report_file
Файл report_file теперь содержит последние сто строк вывода отладчика включая register dump и backtrace, которые являются самыми ценными массивами информации. Пожалуйста, не удаляйте эту часть, даже если не понимаете, что она означает.
Пошлите отчет на Wine Bugzilla . Необходимо прикрепить файл report_file. Вместе с относящейся к делу информацией, о том, как вы его создали. Не вставляйте текст файла в текст самого отчета об ошибкt - он довольно велик и спутает отчет. Если вы правильно проделаете всю эту процедуру, ваши шансы на получение ответа с помощью довольно велики.
4100117770549562
Установил wine, все обновления к линуксу, установимл нужную программу. Программа запускается, но послеэтапа загрузкипрограммы выскакивает ошибка: В программе SlotMultiTagli01.exe обнаружена серьезная ошибка и она должна быть закрыта. Просим извинения за неудобства. после этого моя программа не реагирует на действия пользователя, а затем закрывается.
[email protected]:~$ wine "C:\\Program Files\\SlotMultiTagli01\\SlotMultiTagli01.exe"
fixme:ole:OleLoadPictureEx (0xb2378c,12862,1,,x=0,y=0,f=0,0x32f8c0), partially implemented.
err:typelib:sltg_get_typelib_ref Unable to find reference
err:typelib:sltg_get_typelib_ref Unable to find reference
err:typelib:sltg_get_typelib_ref Unable to find reference
err:typelib:sltg_get_typelib_ref Unable to find reference
err:typelib:sltg_get_typelib_ref Unable to find reference
err:typelib:sltg_get_typelib_ref Unable to find reference
fixme:comm:set_queue_size insize 64 outsize 64 unimplemented stub
fixme:comm:set_queue_size insize 64 outsize 64 unimplemented stub
fixme:ole:OleLoadPictureEx (0xb26024,774,1,,x=0,y=0,f=0,0x32f18c), partially implemented.
fixme:ole:OleLoadPictureEx (0xb26024,774,1,,x=0,y=0,f=0,0x32f18c), partially implemented.
fixme:ole:OleLoadPictureEx (0xb26024,774,1,,x=0,y=0,f=0,0x32f18c), partially implemented.
fixme:ole:OleLoadPictureEx (0xb26024,1086,1,,x=0,y=0,f=0,0x32f18c), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OleLoadPictureEx (0xb26024,1086,1,,x=0,y=0,f=0,0x32f18c), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OleLoadPictureEx (0xb26024,1086,1,,x=0,y=0,f=0,0x32f18c), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OleLoadPictureEx (0xb26024,1086,1,,x=0,y=0,f=0,0x32f18c), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OLEPictureImpl_Render Not quite correct implementation of rendering icons.
fixme:ole:OLEPictureImpl_Render Not quite correct implementation of rendering icons.
fixme:ole:OleIconToCursor (0x400000,0x600ba), partially implemented.
fixme:ole:OleLoadPictureEx (0xb265ac,774,0,,x=0,y=0,f=0,0x32f010), partially implemented.
fixme:ole:OleLoadPictureEx (0xb265ac,0,0,,x=32,y=32,f=0,0x1d50e0), partially implemented.
fixme:ole:OleLoadPictureEx (0xb265ac,0,0,,x=32,y=32,f=0,0x1d51e8), partially implemented.
fixme:ole:OleLoadPictureEx (0xb265ac,0,0,,x=32,y=32,f=0,0x1d5278), partially implemented.
fixme:ole:OleLoadPictureEx (0xb265ac,0,0,,x=32,y=32,f=0,0x1d5808), partially implemented.
fixme:ole:OleLoadPictureEx (0xb265ac,774,1,,x=0,y=0,f=0,0x32efb0), partially implemented.
fixme:ole:OleLoadPictureEx (0xb265ac,1086,1,,x=0,y=0,f=0,0x32efb0), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OleLoadPictureEx (0xb265ac,774,1,,x=0,y=0,f=0,0x32ef80), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OleLoadPictureEx (0xb265ac,1086,1,,x=0,y=0,f=0,0x32ef80), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OleLoadPictureEx (0xb265ac,1086,1,,x=0,y=0,f=0,0x32efe0), partially implemented.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OLEPictureImpl_SaveAsFile (0x1c3eb8)->(0x210a60, 0, (nil)), hacked stub.
fixme:ole:OLEPictureImpl_get_hPal unimplemented for type 3. Returning 0 palette.
fixme:ole:OleLoadPictureEx (0xb32f6c,2359350,1,,x=0,y=0,f=0,0x32ed14), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,17441,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,184103,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,172028,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,171870,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,157827,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,157258,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,95724,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,92455,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,84709,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,80269,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,71460,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,67527,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,44187,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,70686,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,56932,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,76741,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,138042,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,75822,1,,x=0,y=0,f=0,0x32f434), partially implemented.
fixme:ole:OleLoadPictureEx (0xb23d2c,74876,1,,x=0,y=0,f=0,0x32f434), partially implemented.
err:ole:ClientIdentity_QueryMultipleInterfaces IRemUnknown_RemQueryInterface failed with error 0x80004002
err:ole:ClientIdentity_QueryMultipleInterfaces IRemUnknown_RemQueryInterface failed with error 0x80004002
wine: Unhandled page fault on read access to 0x00000000 at address 0x681e5fc6 (thread 0020), starting debugger.
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x681e5fc6).
err:dbghelp:pe_load_dbg_file Couldn't find .DBG file "DLL\\MSVBVM60.dbg" ("\x80\x93\x1d")
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:681e5fc6 ESP:0032f13c EBP:0032f17c EFLAGS:00210246( R- -- I Z- -P- )
EAX:00000000 EBX:68767ff4 ECX:00000001 EDX:0032f46c
ESI:00000000 EDI:06b0979c
Stack dump:
0x0032f13c: 00000004 686c2e67 06b0979c 00000000
0x0032f14c: 00000004 7bc34b8f 00110060 0032f198
0x0032f15c: 7bc4791b 00000000 06b065b0 7bc99ff4
0x0032f16c: 0032f1cc 68767ff4 00000000 06b065e0
0x0032f17c: 0032f20c 686c570d 00000004 06b097e8
0x0032f18c: 0013104c 686cb621 06b065e0 0012fca0
Backtrace:
=>0 0x681e5fc6 in libc.so.6 (+0x74fc6) (0x0032f17c)
1 0x686c570d in oleaut32 (+0x2570c) (0x0032f20c)
2 0x686c5b46 in oleaut32 (+0x25b45) (0x0032f29c)
3 0x686c60e4 in oleaut32 (+0x260e3) (0x0032f32c)
4 0x686c5f7e in oleaut32 (+0x25f7d) (0x0032f3bc)
5 0x686c706e in oleaut32 (+0x2706d) (0x0032f4ac)
6 0x0037007c (0x0032f670)
7 0x00598ba1 in slotmultitagli01 (+0x198ba0) (0x0032f7d8)
8 0x66051fb3 in msvbvm60 (+0x51fb2) (0x0032f7e4)
9 0x0042b028 in slotmultitagli01 (+0x2b027) (0x0032f7f4)
10 0x660522b4 in msvbvm60 (+0x522b3) (0x0032f840)
11 0x6605271b in msvbvm60 (+0x5271a) (0x0032f914)
12 0x660528e7 in msvbvm60 (+0x528e6) (0x0032f938)
13 0x6605e222 in msvbvm60 (+0x5e221) (0x0032f99c)
14 0x66082177 in msvbvm60 (+0x82176) (0x0032fb1c)
15 0x6605d0c6 in msvbvm60 (+0x5d0c5) (0x0032fb44)
16 0x6605f855 in msvbvm60 (+0x5f854) (0x0032fba0)
17 0x683d7f3a WINPROC_wrapper+0x19() in user32 (0x0032fbd0)
18 0x683d9a3c in user32 (+0x99a3b) (0x0032fc20)
19 0x683dad9f in user32 (+0x9ad9e) (0x0032fc70)
20 0x6839d99e DispatchMessageA+0x9d() in user32 (0x0032fd60)
21 0x6600a4a3 in msvbvm60 (+0xa4a2) (0x0032fda0)
22 0x6600a41a in msvbvm60 (+0xa419) (0x0032fde4)
23 0x6600a2f8 in msvbvm60 (+0xa2f7) (0x6601a098)
24 0x66006ba7 in msvbvm60 (+0x6ba6) (0x660c7f80)
25 0x0c2474ff (0x0424448b)
0x681e5fc6: repe movsl (%esi),%es%edi)
Modules:
Module Address Debug info Name (112 modules)
PE 340000- 34d000 Deferred pollrts_32
PE 350000- 36b000 Deferred cesproutils
PE 400000- 5f7000 Export slotmultitagli01
PE f9c0000- fa22000 Deferred expsrv
PE 10000000-10036000 Deferred threed32
PE 10200000-10255000 Deferred msvcrt40
PE 1b000000-1b170000 Deferred msjet40
PE 1b5d0000-1b665000 Deferred mswstr10
PE 1b740000-1b7c8000 Deferred dao360
ELF 20000000-2002c000 Deferred ws2_32
\-PE 20010000-2002c000 \ ws2_32
ELF 2002c000-20047000 Deferred wsock32
\-PE 20030000-20047000 \ wsock32
ELF 20047000-2007a000 Deferred uxtheme
\-PE 20050000-2007a000 \ uxtheme
ELF 2007a000-200c1000 Deferred libcups.so.2
ELF 200c1000-2015c000 Deferred libgnutls.so.26
ELF 2015c000-2020d000 Deferred libkrb5.so.3
ELF 2020d000-2022e000 Deferred libjpeg.so.62
PE 217a0000-217c3000 Deferred comdlg32
ELF 21981000-2198d000 Deferred libavahi-common.so.3
ELF 24720000-2477f000 Deferred shlwapi
\-PE 24730000-2477f000 \ shlwapi
PE 27580000-27686000 Deferred mscomctl
ELF 2d3c3000-2d3f9000 Deferred winspool
\-PE 2d3d0000-2d3f9000 \ winspool
ELF 37079000-3707d000 Deferred libkeyutils.so.1
ELF 4a00e000-4a013000 Deferred libgpg-error.so.0
ELF 4bab5000-4bb28000 Deferred libgcrypt.so.11
ELF 4f122000-4f133000 Deferred libavahi-client.so.3
ELF 4fb3e000-4fb5e000 Deferred iphlpapi
\-PE 4fb40000-4fb5e000 \ iphlpapi
ELF 5407c000-54085000 Deferred librt.so.1
ELF 549b0000-54a20000 Deferred msvcrt
\-PE 549c0000-54a20000 \ msvcrt
ELF 54c57000-54c90000 Deferred libdbus-1.so.3
ELF 55f9d000-55fc1000 Deferred libk5crypto.so.3
ELF 5c9ad000-5c9ea000 Deferred windowscodecs
\-PE 5c9b0000-5c9ea000 \ windowscodecs
ELF 5cc5d000-5cc8c000 Deferred libgssapi_krb5.so.2
PE 5f800000-5f8e7000 Deferred mfc40
ELF 60ef7000-60f1e000 Deferred netapi32
\-PE 60f00000-60f1e000 \ netapi32
ELF 62bb5000-62bc9000 Deferred libresolv.so.2
ELF 638e6000-638f7000 Deferred libtasn1.so.3
PE 66000000-66152000 Export msvbvm60
PE 66630000-66651000 Deferred vb6it
ELF 68000000-6801d000 Deferred ld-linux.so.2
ELF 6801d000-68158000 Deferred libwine.so.1
ELF 68158000-68171000 Deferred libpthread.so.0
ELF 68171000-682cb000 Export libc.so.6
ELF 682cb000-682cf000 Deferred libdl.so.2
ELF 682cf000-682f5000 Deferred libm.so.6
ELF 682f5000-682fd000 Deferred libnss_compat.so.2
ELF 682fd000-68314000 Deferred libnsl.so.1
ELF 68314000-6831e000 Deferred libnss_nis.so.2
ELF 6831e000-6832a000 Deferred libnss_files.so.2
ELF 6832a000-68439000 Export user32
\-PE 68340000-68439000 \ user32
ELF 68439000-684c3000 Deferred gdi32
\-PE 68450000-684c3000 \ gdi32
ELF 684c3000-6851c000 Deferred advapi32
\-PE 684d0000-6851c000 \ advapi32
ELF 6851c000-6858d000 Deferred rpcrt4
\-PE 68530000-6858d000 \ rpcrt4
ELF 6858d000-68689000 Deferred ole32
\-PE 685b0000-68689000 \ ole32
ELF 68689000-6876f000 Export oleaut32
\-PE 686a0000-6876f000 \ oleaut32
ELF 6876f000-687e5000 Deferred libfreetype.so.6
ELF 687e5000-687fa000 Deferred libz.so.1
ELF 687fa000-6882a000 Deferred libfontconfig.so.1
ELF 6882a000-68851000 Deferred libexpat.so.1
ELF 68851000-688f0000 Deferred winex11
\-PE 68860000-688f0000 \ winex11
ELF 688f0000-688f9000 Deferred libsm.so.6
ELF 688f9000-68912000 Deferred libice.so.6
ELF 68912000-68922000 Deferred libxext.so.6
ELF 68922000-68927000 Deferred libuuid.so.1
ELF 68927000-68941000 Deferred libxcb.so.1
ELF 68941000-68945000 Deferred libxau.so.6
ELF 68945000-6894b000 Deferred libxdmcp.so.6
ELF 6894b000-6896c000 Deferred imm32
\-PE 68950000-6896c000 \ imm32
ELF 6896c000-68970000 Deferred libxinerama.so.1
ELF 68970000-68976000 Deferred libxxf86vm.so.1
ELF 68976000-68980000 Deferred libxrender.so.1
ELF 68980000-68988000 Deferred libxrandr.so.2
ELF 68988000-6898c000 Deferred libxcomposite.so.1
ELF 6898c000-68992000 Deferred libxfixes.so.3
ELF 68992000-6899c000 Deferred libxcursor.so.1
ELF 6c220000-6c228000 Deferred libkrb5support.so.0
PE 6c520000-6c52d000 Deferred mfc40loc
ELF 6d26f000-6d283000 Deferred lz32
\-PE 6d270000-6d283000 \ lz32
ELF 6fbae000-6fd42000 Deferred shell32
\-PE 6fbc0000-6fd42000 \ shell32
ELF 7290d000-72911000 Deferred libcom_err.so.2
ELF 7360d000-736db000 Deferred comctl32
\-PE 73620000-736db000 \ comctl32
ELF 76b40000-76b54000 Deferred olepro32
\-PE 76b50000-76b54000 \ olepro32
ELF 76b72000-76c1d000 Deferred comdlg32
\-PE 76b80000-76c1d000 \ comdlg32
ELF 76ec4000-76fe1000 Deferred libx11.so.6
ELF 792fb000-79314000 Deferred version
\-PE 79300000-79314000 \ version
ELF 7b800000-7b93a000 Deferred kernel32
\-PE 7b810000-7b93a000 \ kernel32
ELF 7bc00000-7bcb6000 Deferred ntdll
\-PE 7bc10000-7bcb6000 \ ntdll
ELF 7bf00000-7bf04000 Deferred
Threads:
process tid prio (all id:s are in hex)
0000000e services.exe
00000014 0
00000010 0
0000000f 0
00000011 winedevice.exe
00000018 0
00000017 0
00000013 0
00000012 0
00000019 explorer.exe
0000001a 0
0000001b rpcss.exe
00000022 0
0000001e 0
0000001d 0
0000001c 0
00000024 VisSlotMulti01.exe
00000029 0
0000003a 0
0000001f 0
00000021 0
00000031 0
00000035 0
00000032 0
0000002b 0
00000027 0
00000026 0
00000025 0
00000033 (D) C:\Program Files\SlotMultiTagli01\SlotMultiTagli01.exe
00000034 0
00000030 0
00000036 0
0000002e 0
0000002a 1
0000002f 1
0000002d 1
00000020 0 Backtrace:
=>0 0x681e5fc6 in libc.so.6 (+0x74fc6) (0x0032f17c)
1 0x686c570d in oleaut32 (+0x2570c) (0x0032f20c)
2 0x686c5b46 in oleaut32 (+0x25b45) (0x0032f29c)
3 0x686c60e4 in oleaut32 (+0x260e3) (0x0032f32c)
4 0x686c5f7e in oleaut32 (+0x25f7d) (0x0032f3bc)
5 0x686c706e in oleaut32 (+0x2706d) (0x0032f4ac)
6 0x0037007c (0x0032f670)
7 0x00598ba1 in slotmultitagli01 (+0x198ba0) (0x0032f7d8)
8 0x66051fb3 in msvbvm60 (+0x51fb2) (0x0032f7e4)
9 0x0042b028 in slotmultitagli01 (+0x2b027) (0x0032f7f4)
10 0x660522b4 in msvbvm60 (+0x522b3) (0x0032f840)
11 0x6605271b in msvbvm60 (+0x5271a) (0x0032f914)
12 0x660528e7 in msvbvm60 (+0x528e6) (0x0032f938)
13 0x6605e222 in msvbvm60 (+0x5e221) (0x0032f99c)
14 0x66082177 in msvbvm60 (+0x82176) (0x0032fb1c)
15 0x6605d0c6 in msvbvm60 (+0x5d0c5) (0x0032fb44)
16 0x6605f855 in msvbvm60 (+0x5f854) (0x0032fba0)
17 0x683d7f3a WINPROC_wrapper+0x19() in user32 (0x0032fbd0)
18 0x683d9a3c in user32 (+0x99a3b) (0x0032fc20)
19 0x683dad9f in user32 (+0x9ad9e) (0x0032fc70)
20 0x6839d99e DispatchMessageA+0x9d() in user32 (0x0032fd60)
21 0x6600a4a3 in msvbvm60 (+0xa4a2) (0x0032fda0)
22 0x6600a41a in msvbvm60 (+0xa419) (0x0032fde4)
23 0x6600a2f8 in msvbvm60 (+0xa2f7) (0x6601a098)
24 0x66006ba7 in msvbvm60 (+0x6ba6) (0x660c7f80)
25 0x0c2474ff (0x0424448b)
Всем привет!
Прочел статью про «Все тонкости настройки Wine», оказалось, что там далеко не все тонкости. Поэтому написал этот пост как дополнение тому.
В данном посте в основном вольный перевод оф. документации, а так же несколько своих и чужих хитростей при работе с вайн.
Скорее всего данный пост будет интересен новичкам и обычным пользователям GNU\Linux. Тем не менее добротные советы от специалистов не будут лишними.
Что такое вайн думаю объяснять нет смысла. Хочу лишь показать несколько трюков при работе с ним.
Префиксы
С их помощью вы можете устанавливать приложения именно туда куда вы их хотите установить, а не в дефолтный .wine. Даже если что то пойдет не так, достаточно удалить тот префикс, в котором произошла ошибка, при этом все другие приложения\префиксы (предположим, что они настроенные) не пострадают.
То есть каждый созданный вами префикс можно рассматривать как отдельный wine – он независим от других префиксов. Или, для еще большей простоты, воспринимайте каждый созданный префикс, как отдельно установленную винду.
Теперь немного практики:
Сейчас мы создадим папку Gamez, в ней мы создадим префикс lib в который установим несколько библиотек. Эти библиотеки все равно пригодятся потом, поэтому пусть кешируются.
mkdir ./Gamez
env WINEPREFIX=$HOME/Gamez/lib wine winecfg
env WINEPREFIX=$HOME/Gamez/lib winetricks directx9 vcrun2005 vcrun2008 vcrun6
env WINEPREFIX=$HOME/Gamez/lib wine winecfg
Последней командой мы опять вызвали окно конфигуратора wine. Просто перейдите на вкладку «Библиотеки» и убедитесь, что все установилось. После этого выполните:
wine winecfg — откроется конфигуратор wine (не из префикса), проверьте ту же вкладку. Видите! Здесь никаких библиотек. Значит он цел и невредим.
Как установить несколько разных версий wine?
Для решения этой задачи придется собирать wine из исходников. При сборке просто используем префикс для дефолтной установке. Примерно как здесь:
./configure prefix=/path/to/install/directory && make
sudo make install
AppDB
Обязательно используйте appdb для поиска информации по установке приложения, возможно стаф, который вы устанавливаете, уже установили и расписали все подводные камни.
Наводим порядок в домашнем каталоге
Если вы любите поиграть, то вероятно ваш /home раздел забит сейвами и прочими файлами игр. Избавиться от этого всего дела, не в ущерб можно так:
Замените стандартный путь к моим документам, на желаемое место для хранения сейвов. У меня, к примеру, этот путь ведет в папку с игрой.
Использование последних версий wine
Wine такая штука, чем новее тем лучше! С помощью следующей команды вы всегда будете иметь последнею версию wine (для Ubuntu-подобных дистрибутивов):
sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
После выполнения этих команд ищите последнею версию wine в synaptic.
Установка winetricks
Если по каким-либо причинам у вас до сих пор нет winetricks, то завести его в хозяйстве можно так:
Как установить MSI файл?
Это можно сделать двумя способами: wine msiexec /i whatever.msi
Альтернативный способ: wine start whatever.msi
The file foo.exe is not marked as executable… — Что это значит?
chmod a+x ./patch/you/exe.file
если же файл находится на диске, то должна помочь вот эта команда:
mount -o remount,mode=0777,exec /media/cdrom
Как вывести содержимое отладки в отдельный файл?
cd ~/.wine/drive_c/Games/Tron
wine tron.exe &> log.txt
Как отключить «crash» диалог?
Если вы используете префиксы, не забудьте в команде указать путь к префиксу — winetricks nocrashdialog
После запуска приложения\игры, wine ругается и ничего не запускает. Что делать?
Для начала изучите логи, обычно в них все написано. Ниже я приведу самые популярные ошибки:
MFC40.DLL : через winetricks установи mfc40 (Microsoft Foundation Classes from Visual C++ 4).
MFC42.DLL, MSVCP60.DLL : через winetricks установи vcrun6 (MS Visual C++ 6 sp4 libraries: mfc42, msvcp60, msvcrt).
MFC71.DLL, MSVCP71.DLL : через winetricks установи vcrun2003 (MS Visual C++ 2003 libraries: mfc71,msvcp71,msvcr71).
MFC80.DLL, MSVCP80.DLL : через winetricks установи vcrun2005 (MS Visual C++ 2005 libraries: mfc80,msvcp80,msvcr80).
MFC90.DLL, MSVCP90.DLL : через winetricks установи vcrun2008 (MS Visual C++ 2008 libraries: mfc90,msvcp90,msvcr90).
MDAC : через winetricks установи mdac27 (MS MDAC 2.7).
Мое приложение работает, но текстовые поля ведут себя странно
Проанализируйте дебаг wine после запуска приложения, если видите что ругается на RICHED20.DLL, то доустановите через winetricks следующею библиотеку: riched20
Вы можете просто их игнорировать, это информация для разработчиков.
Через вайнтрикс можно установить 1 или 2 фреймворк. Как альтернатива использовать mono. Если же приложение требует 3 или 4 фреймворк, то скорее всего оно работать не будет (хотя 3 и даже 3.5 доступен в меню winetricks). Ждем пока решат эту проблему.
Игра которую я пытаюсь установить защищена от распространения возможно ли её установить?
Смотри список copy protection, которые работают.
Что делать если приложение требует IE?
Wine использует по умолчанию ядро\движок Gecko – это то же, что и на Firefox. Поэтому можно через winetrikcs доустановить gecko(если его нет) и\или fakeie6.
Если же это не помогло, попробуйте поменять версию windows на win2k и установить через winetricks ie6, ie7 или ie8.
Как включить сглаживание шрифтов в wine?
Если ваша версия выше чем 1.1.12 вы можете использовать winetricks и выбрать один из трех вариантов сглаживания: fontsmooth-gray, fontsmooth-rgb или fontsmooth-bgr
После выхода из игры не восстанавливается разрешение экрана
Должно помочь: xrandr -s 0
Как попасть в реестр wine?
wine regedit — Если используются префиксы укажите путь в команде.
Нуждается ли wine в отдельной установке драйверов?
Нет. Wine – это не эмулятор компьютера, он лишь переводит вызовы Windows API в понятные линуксу команды.
Безопасно ли запускать wine от root?
Никогда не запускайте wine от root пользователя.
Если это уже случилось измените владельца ~./wine директории.
cd ~
sudo chown -R $USER:$USER .wine
Техника безопасности при использовании wine
Вот несколько советов, которые помогут вам повысить безопасность:
- Никогда не запускайте программы с подозрительных сайтов
- Никогда не используйте root пользователя для запуска приложений!
- Используйте антивирусный сканер для запускаемых приложений, например ClamAV. Или хотя бы проверяете экзешники на virustotal
- Попробуйте удалить wine диск Z:, который указывает по умолчанию на корневой каталог. В качестве обходного пути запускать программы из ~/.wine/drive_c директории.
- Используйте виртуальную машину для запуска и проверки подозрительных приложений.
Файл .xsession-errors забивает мусором все дисковое пространство. Что делать? (рецепт от --=XliN=--)
Делаем «песочницу» для wine (рецепт от drBatty)
*1) создаём юзера
2) меняем права на домашние каталоги на 700
*3) прописываем команду в sudoers (visudo)
первый_юзер имя_компа=(второй_юзер) NOPASSWD: /программа_с_полным_путём
4) у первого юзера прописываем в автозагрузку DE команду xhost +local: второй_юзер
5) в ярлык для запуска программы пишем
sudo -u второй_юзер /программа_с_полным_путём
тогда первый юзер сможет более-менее безопасно запускать программы от имени второго юзера.
звёздочкой отмечены пункты, для которых нужны права рута.
Здравствуйте! Пытаюсь поставить Microsoft Office 2010 Standard 14.0.7151.5001 SP2 (установщик не официальный, а репак by D!akov) на ПК с Ubuntu 16.04 amd64, но вижу ошибку:
В программе setup.exe обнаружена серьёзная ошибка. Программа будет закрыта. Приносим извинения за неудобство.
Вот логи Wine
Как решить эту проблему?
- Вопрос задан более трёх лет назад
- 2654 просмотра
Оценить 6 комментариев
Может это судьба намекает, что пора прекращать пользоваться ворованной вируснёй и переходить на LibreOffice ? ;)
SyavaSyava купили не ворованный "репак by D!akov"? Сильно, чо :)
Нет, я не настаиваю - приключения не мой же анус . Просто хотел показать достойную бесплатную альтернативу.
А на счёт "все". я поставил СОТНИ либроофисов (ранее ставил опен, вот тот похуже, но не критично) на венду и как-то не помню, что бы кто-то вернулся на МС. Причём это в конторах, которые обмениваются файлами по всему миру. Да, отчасти как раз из-за денег (ворованное там вообще не допускается). Но случавшиеся непонятки (а их немного) с либрой достаточно успешно решались и люди научились в нек местах чуть по другому тыкать кнопку.
Вася Петров: В LibreOffice Writer нет удобного редактора формул (есть LibreOffice Math, но это отдельная программа, и она не в счёт). Поэтому и пользуюсь Word'ом.
verdex :) LibreOffice Math — это редактор формул, который *входит в пакет LibreOffice*.
То, что в МС офис невозможно отдельно поставить редактор форм - это не фича, а бага :) Но его тоже, насколько я помню, нужно отдельно доустанавливать (не важно как, но отдельно ж). Да, встраивается в документ. Но точно также и в либре.
Просто редактор форму ДОПОЛНИТЕЛЬНО вынесен в отдельное ПО которое модно использовать не только в ворде. А в ИСПОЛЬЗОВАНИИ разницы большой нет.
Добрый день.
Всё гораздо проще.
Ставите VirtualBox, потом гостевой Windows, в завершении ставите MS Office.
Подробней про установку virtualBox
Используйте LibreOffice(предустановлен в убунте) или онлайн гуглдоки(весь мир пользуется и ничего).
Каких то особых проблем при октрытии документов созданых в Офисе через LibreOffice у меня не возникало.
Пс попробуйте другую версию или сборку или портативный. Через вайн или виртуалбокс.
Пытаться в wine запустить MS Office на бубунте - это как пытаться прикрутить к велосипеду крылья и пытаться полететь. Возможно, он крыльями махать начнет. Возможно даже метровый забор удастся перелететь. Но в небо взлелеть не получится, как ни старайся.
Wine - это такой проект, которому лет почти столько сколько я занимаюсь UNIX. И никогда у них не заводилось что-то сложнее notepad и несложных игр семи-десятилетней давности. А уж запустить офис, который привязан к винде насквозь - блажен кто верует.
Если Вам прям нужен виндовый офис - ставьте винду в KVM. Если нужен просто офис - используйте либру. Но при этом не забывайте, что чем сложнее документ, тем сложнее его будет открыть MS Office после либры.
Чуть больше года назад для написания статьи о проверки проекта с помощью PVS-Studio был взят проект Wine. Статья написана, авторы были уведомлены и даже попросили полный отчёт проверки анализатором, на что получили положительный ответ. Недавно нам написал один из разработчиков проекта. В статье будет рассказано о нашем общении, проделанной работе команды разработчиков проекта Wine по улучшению кода и о том, что ещё предстоит сделать.
Введение
Wine (Wine Is Not Emulator — Wine — не эмулятор) — это набор программ, позволяющий пользователям Linux, Mac, FreeBSD, и Solaris запускать Windows-приложения без необходимости установки на компьютер самой Microsoft Windows. Wine является активно развивающимся кросс-платформенным свободным ПО, распространяемым под лицензией GNU Lesser General Public License.
В августе 2014 года была опубликована статья: Проверяем Wine с помощью PVS-Studio и Clang Static Analyzer. Недавно мы получили письмо от одного из разработчиков Wine — Michael Stefaniuc. В письме он поблагодарил команду PVS-Studio за использование статического анализатора и предоставление отчёта.
Также он привёл небольшую статистку по исправлению предупреждений анализатора за год. По этой ссылке можно найти около 180 коммитов, содержащих исправления исходного кода с пометкой «PVS-Studio».
На рисунке 1 представлена статистика исправления 20 самых полезных, с точки зрения авторов, типов предупреждений анализатора для проекта.
Рисунок 1 — The top 20 successful error codes for Wine
Michael пояснил, что совмещать текущий исходный код со старым отчётом анализатора уже затруднительно и попросил проверить проект ещё раз. Проект Wine активно развивается, статический анализатор PVS-Studio тоже активно развивается, поэтому я снова решил проверить этот проект. Результатом стала эта небольшая заметка, где я опишу 10 самых подозрительных участков кода. Естественно разработчики получили полный отчет и смогут изучить и прочие потенциально опасные места.
Top 10 предупреждений
Предупреждение V650
V650 Type casting operation is utilized 2 times in succession. Next, the '+' operation is executed. Probably meant: (T1)((T2)a + b). descriptor.c 967
Анализатор обнаружил операцию сложения с переменной, с которой выполняется двойное приведение типа. Скорее всего здесь забыли заключить первое приведение типа и операцию сложения в скобки. Выше по коду есть точно такой же фрагмент, только со скобками:
Предупреждение V590
V590 Consider inspecting the 'lret == 0 || lret != 234' expression. The expression is excessive or contains a misprint. winemenubuilder.c 3430
В коде имеется избыточное сравнение " lret == ERROR_SUCCESS". Видимо имеет место логическая ошибка. Условие истинно для всех значений переменной 'lret', неравных 'ERROR_MORE_DATA'. Для наглядности можно посмотреть на таблицу истинности на рисунке 2.
Рисунок 2 — Таблица истинности условного выражения
Красным выделены два столбца, где результаты логических операций полностью совпадают.
- V590 Consider inspecting the 'last_error == 183 || last_error != 3' expression. The expression is excessive or contains a misprint. schedsvc.c 90
Предупреждение V576
V576 Incorrect format. Consider checking the fourth actual argument of the 'printf' function. To print the value of pointer the '%p' should be used. msvcirt.c 828
Анализатор обнаружил подозрительное место, в котором значение указателя пытаются распечатать с помощью спецификатора '%d. Написание этого фрагмента кода с большой вероятностью было выполнено методом copy-paste. Можно предположить, что сначала был написал первый вызов функции printf(), последний аргумент в которой правильно соответствует используемому спецификатору '%d'. Но потом эту строчку скопировали ещё два раза и в качестве последнего аргумента стали передавать указатель, а формат строки поменять забыли.
Предупреждение V557
V557 Array overrun is possible. The '16' index is pointing beyond array bound. winaspi32.c 232
Анализатор обнаружил обращение к памяти за пределы массива 'rgbuf' к элементам с индексами 16 и 17. Сам массив содержит только 16 элементов. Возможно, условие «rqbuf[15]&0x8» редко является истинным и такую ошибку не заметили.
Предупреждение V711
V711 It is dangerous to create a local variable within a loop with a same name as a variable controlling this loop. dplobby.c 765
В теле цикла обнаружено объявление переменной «filetime», совпадающей с переменной, используемой для контроля цикла. Это будет приводить к потере локальных изменений в «filename» при выходе из внутреннего цикла. Глядя на весь код функции можно предположить, что большой фрагмент кода был скопирован в тело цикла с незначительными изменениями. Это может и не нести серьёзной опасности, всё равно это является нехорошим стилем программирования.
Предупреждение V530
V530 The return value of function 'DSCF_AddRef' is required to be utilized. dsound_main.c 760
В коде найдена функция DSCF_AddRef(), возвращаемое значение которой не используется. Более того, эта функция не меняет какие-то состояния в программе. Это очень подозрительное место, которое необходимо проверить разработчикам.
Предупреждение V593
Приоритет логических операций выше приоритета операции присваивания. Таким образом, в этом выражении первым вычисляется выражение «vsnprintf(. ) < 0», следовательно в переменную 'ret' будет сохранено не количество записанных символов, а значение 0 или 1. Выражение «ret >= sz» будет всегда ложным, поэтому цикл выполнится только если в 'ret' запишется единица. Такой сценарий будет возможен, если функция vsnprintf() выполнится с ошибкой и вернёт отрицательное значение.
Предупреждение V716
V716 Suspicious type conversion in return statement: returned HRESULT, but function actually returns BOOL. ordinal.c 5198
В проекте Wine много мест, где тип HRESULT преобразуют в BOOL или просто работают с переменной это типа как с булевым значением. Опасность заключается в том, что тип HRESULT устроен достаточно сложно и должен сигнализировать о том, прошла ли операция успешно, какой результат был возвращён после выполнения операции, в случае ошибки — где произошла ошибка, обстоятельства этой ошибки и так далее.
К счастью, разработчики активно исправляют такие места и в баг-трекере можно найти много соответствующих коммитов.
Предупреждение V523
V523 The 'then' statement is equivalent to the 'else' statement. resource.c 661
Анализатор обнаружил условие с одинаковыми блоками кода. Возможно, фрагмент кода просто скопировали и забыли изменить.
Предупреждение V519
V519 The 'res' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 5905, 5907. action.c 5907
Тестирование должно обеспечивать надёжность приложение, а если ошибки допущены в тестах, то беда. В этом фрагменте кода забыли проверить результат одной функции и сразу перешли к получению и проверке значения другой функции.
Заключение
В ответ на просьбу о повторной проверке проекта, мы отправили свежий отчёт анализатора PVS-Studio и временный ключ продукта для удобного просмотра отчёта средствами плагина для Visual Studio или утилиты Standalone. За год код проекта Wine стал значительно чище с точки зрения нашего анализатора, теперь разработчики могут ещё улучшить свой код.
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Svyatoslav Razmyslov. Analyzing Wine: One Year Later.
Часто к нашим статьям задают одни и те же вопросы. Ответы на них мы собрали здесь: Ответы на вопросы читателей статей про PVS-Studio, версия 2015. Пожалуйста, ознакомьтесь со списком.
Читайте также: