Bug 48802 - Не работает печать в wine для 32-разрядных приложений
Summary: Не работает печать в wine для 32-разрядных приложений
Status: CLOSED FIXED
Alias: None
Product: Branch p10
Classification: Unclassified
Component: wine (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: qa-team@altlinux.org
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-12-14 13:32 MSK by Александр Агеев
Modified: 2024-02-12 12:52 MSK (History)
2 users (show)

See Also:


Attachments
log-файл wine (506.89 KB, text/plain)
2024-02-09 13:55 MSK, Александр Агеев
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Агеев 2023-12-14 13:32:22 MSK
Получение ошибки:
1. Убедиться, что печать работает в Linux
2. Запустить блокнот wine:
wine notepad
3. Ввести какой-нибудь текст и отправить на печать
Ничего не происходит, сообщений об ошибках не выдается.

Для 64-разрядных приложений wine, например, Internet Explorer, печать работает.
Печать не работает при WINARCH=win64 и win32. 
---

После включения трассировки WINEDEBUG=+winspool есть подозрение на неправильный вызов функции StartDocPrinterW:
"Плохой" вызов из notepad.exe:
trace:winspool:StartDocPrinterW (hPrinter = 0000000000000002, Level = 1, pDocInfo = 000000000011E7C0 {pDocName = L"Имя-документа", pOutputFile = L"C:\\windows\\CUPS:Cups-PDF", pDatatype = (null)}):
(вместо имени файла в pOutputFile могут быть краказябры)
Согласно документации Microsoft, при печати на принтере не должно быть задано pOutputFile. 
"Хороший" вызов из iexplore.exe:
trace:winspool:StartDocPrinterW (hPrinter = 0000000000000002, Level = 1, pDocInfo = 000000000011EB80 {pDocName = L" Имя-документа", pOutputFile = (null), pDatatype = (null)}):
Comment 1 Vitaly Lipatov 2024-02-09 11:43:58 MSK
Какая-то странная история.
Попробуйте выполнить
epm play wine

> есть подозрение на неправильный вызов функции StartDocPrinterW:
Да, но функции вызывает приложение.

> Печать не работает при WINARCH=win64 и win32. 
Уточните, пожалуйста, при какой разрядности всё же проблема.
Comment 2 Александр Агеев 2024-02-09 13:55:38 MSK
Created attachment 15513 [details]
log-файл wine

В строке 341 находится winspool:StartDocPrinterW, который вызывает подозрение
Comment 3 Александр Агеев 2024-02-09 14:56:48 MSK
1. Обновление wine не требуется. Выполнил
sudo epm update
sudo epm play wine

# /usr/bin/env bash /etc/eepm/play.d/wine.sh --run 
Package wine is already installed from ALT repository.

2. Для получения log-файла использовал:
export WINEDEBUG=+winspool
wine notepad 2> ~/mylog
В блокноте ввел 1 символ, нажал Ctrl-P, <OK>, закрыл блокнот.

3. Неправильный аргумент pDocFile при вызове StartDocPrinterW() - это, конечно, только мое подозрение. Кроме несоответствия документации, смущает, что значение меняется (в сегодняшнем log-файле оно другое).

4. Первоначально я обнаружил невозможность печати в собственной 32 разрядной программе, но потом выяснил, что не печатает и стандартное приложение wine.
Разрядность:
    wine         приложение
    32бит    notepad.exe  32бит      Не печатает
    64бит    notepad.exe  32бит      Не печатает
    64бит    iexplore.exe 64бит      Печатает
Comment 4 Vitaly Lipatov 2024-02-09 19:29:55 MSK
(Ответ для Александр Агеев на комментарий #3)
...
>     wine         приложение
>     32бит    notepad.exe  32бит      Не печатает
>     64бит    notepad.exe  32бит      Не печатает
>     64бит    iexplore.exe 64бит      Печатает
Тут не хватает 
>     64бит    notepad.exe  64бит      ???
вы не могли бы проверить?
Comment 5 Александр Агеев 2024-02-12 07:18:51 MSK
notepad.exe, входящий в состав wine, 32-битный.
Запустить 64-битный notepad.exe, входящий в состав windows-10, не получается, выдает сообщения об ошибке:
Z:\media\sf_\2>./notepad.exe

Z:\media\sf_\2>011c:fixme:ntdll:EtwEventSetInformation (deadbeef, 2, 0000000140020A4A, 39) stub
011c:fixme:heap:RtlSetHeapInformation handle 0000000000000000, info_class 1, info 0000000000000000, size 0 stub!
011c:fixme:combase:RoGetActivationFactory (L"Windows.ApplicationModel.Resources.Core.ResourceManager", {1cc0fdfc-69ee-4e43-9901-47f12687baf7}, 000000000011FC00): semi-stub
011c:err:combase:RoGetActivationFactory Failed to find library for L"Windows.ApplicationModel.Resources.Core.ResourceManager"
Comment 6 Vitaly Lipatov 2024-02-12 11:34:26 MSK
(Ответ для Александр Агеев на комментарий #5)
> notepad.exe, входящий в состав wine, 32-битный.
Ну вообще-то в 64-битном wine все программы по определению 64-битные.

К тому же свои утверждения всегда можно проверить:
$ file sys*/notepad.exe
system32/notepad.exe: PE32+ executable (GUI) x86-64, for MS Windows, 5 sections
syswow64/notepad.exe: PE32 executable (GUI) Intel 80386, for MS Windows, 5 sections
Comment 7 Александр Агеев 2024-02-12 12:51:51 MSK
Признаю свою вину. От разрядности не зависит. c:\windows\system32\notepad.exe и c:\windows\syswow64\notepad.exe не печатает, а iexplore.exe печатает.
Спасибо, теперь буду внимательнее с каталогами.