При попытке что-либо напечатать в Гарант F1 подсчёт страниц уходит в бесконечность.
Ответ от разработчиков Гаранта: "Такая ошибка у нас воспроизводилась под Windows и была нами устранена в версии `6.4.2` (она скоро будет доступна нашим пользователям)" Ждём подтверждения по проверке версии 6.4.2
14.05.07 от 2х пользователей поступила информации, о том что обновление гаранта до версии 6.4.2 никак не повлияло на ситуацию. Проблема осталась прежней
Проблема осталась
*** Bug 592 has been marked as a duplicate of this bug. ***
Подтверждаю на Kubuntu 6.10, WINE@Etersoft 1.0.6. Гарант F1 версия 6.4.2.45, сборка 4073. При попытке напечатать документ начинается подсчет страниц. Терпения хватило только до 32000 страницы, после чего процесс был пристрелен.. Сказал пользователям, чтобы нужные фрагменты копировали в OOo Writer, а документы в формате MS Excel экспортировали из контекстного меню и открывали отдельно OOo Calc'ом. Теперь вместе ждем починки..
А разве значок "Открыть в Word" не работает?
(In reply to comment #6) > А разве значок "Открыть в Word" не работает? > У меня не заработало.. Но! Там W@E 1.0.6. Насколько я помню, в нем еще не было возможности цеплять OOo вместо MSO. На 1.0.7 сразу не переехал из-за глюка с обрезанием строк до первого пробела. А сейчас уже решил дождаться 1.0.8 :)
Нужно проверить на Гарант 7, старые нет смысла смотреть.
Нужно проверить. В обход баги #1074 можно установить Гарант в Windows и перенести его в .wine.
Необходимо проверить работает ли печать на новом Гаранте 7. Баги #1074 и #2660 решены. Изменения должны появитсья в следующем релизе. Гарант 7 теперь без проблем должен устанавливаться
Проверка переносится - в ожидании новой версии Гаранта 1 ноября...
(In reply to comment #0) > При попытке что-либо напечатать в Гарант F1 > подсчёт страниц уходит в > бесконечность. > На последнем Гарантн аналогично...
> > На последнем Гарантн аналогично... > Хотя клиент пишет, что у него всё ок. Сейчас выясняю какой у него Гарант.
трейс по каналам wineps и psdrv: trace:psdrv:PSDRV_FindPrinterInfo 'TestPrinter' trace:psdrv:PSDRV_CreateDC (L"WINEPS.DRV" L"TestPrinter" L"LPT1:" (nil)) trace:psdrv:PSDRV_UpdateDevCaps ImageableArea = 75,75 - 2404,3433: PageSize = 2479x3508 trace:psdrv:PSDRV_UpdateDevCaps devcaps: horzSize = 197mm, vertSize = 284mm, horzRes = 2329, vertRes = 3358 trace:psdrv:PSDRV_SelectFont FaceName = L"" Height = 100 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "CourierNewPSMT" trace:psdrv:PSDRV_SelectPen hpen = 0x60 colour = 00000000 trace:psdrv:PSDRV_SelectBrush hbrush = 0x44 trace:psdrv:PSDRV_SelectFont FaceName = L"" Height = 100 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "CourierNewPSMT" trace:psdrv:PSDRV_FindPrinterInfo 'TestPrinter' trace:psdrv:PSDRV_ExtDeviceMode (Driver=WINEPS.DRV, hwnd=(nil), devOut=0x1eeedd4, Device='TestPrinter', Port='LPT1:', devIn=0x1eeedd4, Profile='(null)', Mode=0000) trace:psdrv:PSDRV_SelectPen hpen = 0x60 colour = 00000000 trace:psdrv:PSDRV_SelectBrush hbrush = 0x44 trace:psdrv:PSDRV_SelectFont FaceName = L"System" Height = 16 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "WineTahoma" trace:psdrv:PSDRV_DeleteDC trace:psdrv:PSDRV_FindPrinterInfo 'TestPrinter' trace:psdrv:PSDRV_CreateDC (L"WINEPS.DRV" L"TestPrinter" L"LPT1:" (nil)) trace:psdrv:PSDRV_UpdateDevCaps ImageableArea = 75,75 - 2404,3433: PageSize = 2479x3508 trace:psdrv:PSDRV_UpdateDevCaps devcaps: horzSize = 197mm, vertSize = 284mm, horzRes = 2329, vertRes = 3358 trace:psdrv:PSDRV_SelectFont FaceName = L"" Height = 100 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "CourierNewPSMT" trace:psdrv:PSDRV_SelectPen hpen = 0x60 colour = 00000000 trace:psdrv:PSDRV_SelectBrush hbrush = 0x44 trace:psdrv:PSDRV_SelectFont FaceName = L"" Height = 100 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "CourierNewPSMT" trace:psdrv:PSDRV_FindPrinterInfo 'TestPrinter' trace:psdrv:PSDRV_ExtDeviceMode (Driver=WINEPS.DRV, hwnd=(nil), devOut=0x5d89938, Device='TestPrinter', Port='LPT1:', devIn=0x5d89938, Profile='(null)', Mode=0002) trace:psdrv:PSDRV_SelectPen hpen = 0x60 colour = 00000000 trace:psdrv:PSDRV_SelectBrush hbrush = 0x44 trace:psdrv:PSDRV_SelectFont FaceName = L"System" Height = 16 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "WineTahoma" trace:psdrv:PSDRV_DeleteDC trace:psdrv:PSDRV_FindPrinterInfo 'TestPrinter' trace:psdrv:PSDRV_CreateDC (L"WINEPS.DRV" L"TestPrinter" L"LPR:HpTest" 0x5d90ba0) trace:psdrv:PSDRV_MergeDevmodes Changing orientation to 1 (Portrait) trace:psdrv:PSDRV_MergeDevmodes Changing page to A4 2099 x 2970 trace:psdrv:PSDRV_MergeDevmodes Changing Scale to 100 trace:psdrv:PSDRV_MergeDevmodes Changing Copies to 1 trace:psdrv:PSDRV_MergeDevmodes Trying to change to unsupported bin 7 trace:psdrv:PSDRV_UpdateDevCaps ImageableArea = 75,75 - 2404,3433: PageSize = 2479x3508 trace:psdrv:PSDRV_UpdateDevCaps devcaps: horzSize = 197mm, vertSize = 284mm, horzRes = 2329, vertRes = 3358 trace:psdrv:PSDRV_SelectFont FaceName = L"" Height = 100 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "CourierNewPSMT" trace:psdrv:PSDRV_SelectPen hpen = 0x60 colour = 00000000 trace:psdrv:PSDRV_SelectBrush hbrush = 0x44 trace:psdrv:PSDRV_SelectFont FaceName = L"" Height = 100 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "CourierNewPSMT" trace:psdrv:PSDRV_SelectFont FaceName = L"MS Sans Serif" Height = -11 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "ArialMT" trace:psdrv:PSDRV_SelectFont FaceName = L"MS Sans Serif" Height = -11 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "ArialMT" trace:psdrv:PSDRV_SelectFont FaceName = L"MS Sans Serif" Height = -11 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "ArialMT" trace:psdrv:PSDRV_SelectFont FaceName = L"MS Sans Serif" Height = -11 Italic = 0 Weight = 400 Последние 3 сообщения как-раз и повторяются бесконечно
Упади на третьем повторе и узнай, какая функция зацикливается на поиске/переборе шрифтов.
подозрение вызывает сообщение: PSDRV_MergeDevmodes Trying to change to unsupported bin 7 Оно появляется, если в dmDefaultSource находится неподдерживаемое значение В данном случае число 7 соответствует DMBIN_AUTO. В коде идёт простой поиск перебором списка pi->ppd->InputSlots. DMBIN_AUTO нигде не учитывается. Сомневаюсь, что это исправление этого как-то окажет влияния на программу, но думаю, что это стоит реализовать
Возникла проблема с генерацией исключения. Программа сама ловит исключения, и в итоге не падает. Пробовали с Антоном применить его патч по перехвату исключений - так и не удалось отключить перехват исключений Гарантом. Переоткрываю багу 2521. Если не срочно, то лучше отложить эту багу до исправления 2521
У клиента такой же гарант что и у нас. Говорит, что печатает корректно.
(In reply to comment #18) > У клиента такой же гарант что и у нас. > Говорит, что печатает корректно. > Судя по трейсу, зацикливается на выборе шрифта. Если не сложно, хорошо бы узнать какие у клиента шрифты, и попробовать поставить такие же у нас. Возможно это решит проблему.
На каком этапе решение проблемы? eter15\eter10 Ошибка проявляется.
Проверил ещё раз. Теперь программа ведёт себя по-другому. В консоле повторяется: trace:psdrv:PSDRV_SelectFont FaceName = L"MS Sans Serif" Height = -11 Italic = 0 Weight = 400 trace:psdrv:get_download_name Got Mac PS name "ArialMT"
1) Шрифт ищется в таблице замещений physDev->pi->FontSubTable[i]. В данном случае таблица нулевой длины. если шрифт найден, то используется шрифт устройства: PSDRV_SelectBuiltinFont(physDev, hfont, &lf, FaceName); если шрифт не найден, то используется GDI шрифт (в данном случае) PSDRV_SelectDownloadFont(physDev) Попробовал принудительно сделать замещение шрифта на "Arial". Трейс изменился, но по-прежнему печать зацикливается: trace:psdrv:PSDRV_SelectFont FaceName = L"MS Sans Serif" Height = -11 Italic = 0 Weight = 400 trace:psdrv:PSDRV_SelectBuiltinFont Trying to find facename 'Arial' trace:psdrv:PSDRV_SelectBuiltinFont Got family 'Helvetica' trace:psdrv:PSDRV_SelectBuiltinFont Got font 'Helvetica' trace:psdrv:ScaleFont 'Helvetica' -11 trace:psdrv:ScaleFont Selected PS font 'Helvetica' size 11 weight 400. trace:psdrv:ScaleFont H = 12 As = 10 Des = 2 IL = 1 EL = 0 fixme:psdrv:PSDRV_SelectFont use DEVICE font
Удалось получить бактрейс вызова функции: Backtrace: =>0 0x7da9edf5 PSDRV_SelectFont+0x12b(physDev=0xf66e260, hfont=0x42c, gdiFont=0x1ea1e0) [/home/vitperov/Projects/wine-dev/dlls/wineps.drv/font.c:59] in wineps (0x01eee78c) 1 0x7ec27d89 FONT_SelectObject+0x7f(handle=0x42c, hdc=0xab8c) [/srv/vitperov/Projects/wine-dev/dlls/gdi32/font.c:500] in gdi32 (0x01eee7ac) 2 0x7ec3ea94 SelectObject+0x9e(hdc=0xab8c, hObj=<register ESI not in topmost frame>) [/srv/vitperov/Projects/wine-dev/dlls/gdi32/gdiobj.c:1044] in gdi32 (0x01eee7dc) 3 0x004defa0 in f1shell.run (+0xdefa0) (0x01eee818)
функция вызывается сразу несколько раз в цикле( около 15-20 раз), и только 1 из них относится к контексту принтера: fixme:font:FONT_SelectObject handle = 0x3368, hdc = 780 fixme:font:FONT_SelectObject ret = 124 fixme:font:FONT_SelectObject handle = 0x42c, hdc = 27172 fixme:font:FONT_SelectObject ret = 124 fixme:font:FONT_SelectObject handle = 0x7c, hdc = 27172 fixme:font:FONT_SelectObject ret = 124 fixme:font:FONT_SelectObject handle = 0x7c, hdc = 27172 fixme:font:FONT_SelectObject ret = 124 fixme:font:FONT_SelectObject handle = 0x7c, hdc = 780 fixme:font:FONT_SelectObject ret = 13160 fixme:font:FONT_SelectObject handle = 0x42c, hdc = 23220 trace:psdrv:PSDRV_SelectFont FaceName = L"MS Sans Serif" Height = -11 Italic = 0 Weight = 400 fixme:psdrv:PSDRV_SelectFont times = 20 trace:psdrv:PSDRV_SelectBuiltinFont Trying to find facename 'Arial' trace:psdrv:PSDRV_SelectBuiltinFont Got family 'Helvetica' trace:psdrv:PSDRV_SelectBuiltinFont Got font 'Helvetica' trace:psdrv:ScaleFont 'Helvetica' -11 trace:psdrv:ScaleFont Selected PS font 'Helvetica' size 11 weight 400. trace:psdrv:ScaleFont H = 12 As = 10 Des = 2 IL = 1 EL = 0 fixme:psdrv:PSDRV_SelectFont use DEVICE font fixme:font:FONT_SelectObject ret = 1068 возвращаемое значение: ret = dc->hFont; пробовал принудительно заменять возвращаемое значение 1068 на другое - ничего не изменилось. Значит дело не в нём
Вообще печать ведёт себя очень странно. Подсчёт страниц уходит в бесконечность, но при этом печать даже не начиналась: функция PSDRV_StartDoc не была вызвана. Также ни разу не вызывались PSDRV_StartPage. Возможно Гарант пытается что-то сделать ДО печати
Как было известно ещё с января 2007 года: >для того, чтобы напечатать текущую страницу - нужно сначала документ подготовить к печати (разбить на страницы), а потом уже происходит печать. Важно отметить, что зацикливание происходит и при попытке предварительного просмотра.
Необходимо проверить в новой версии Гаранта.
(In reply to comment #27) > Необходимо проверить в новой версии > Гаранта. > Обновил старый Гарант до новой версии, проблема осталась, счетчик страниц так же уходит в никуда.
Баг подверждаю. Гарант 7.02.1.058 Wine@Etersoft Public 1.0.9
Также не работает на: wine-1.0.9-eter43centos local Гарант 7.03.1.031
Если выводить на печать текст, который влезает на одну страницу, получаем окно с ошибкой "Invalid floating point operation", и не зацикливаемся, а просто выходим из печати.
(In reply to comment #31) > Если выводить на печать текст, который > влезает на одну страницу, получаем окно с > ошибкой "Invalid floating point operation", и не > зацикливаемся, а просто выходим из печати. > Пробовал воспроизвести в Гаранте 7.02.1.058 - не получилось. Сообщения об ошибке нет. Подсчёт страниц уходит в бесконечность. Статья "обзорная информация и рекомендации". Возможно воспроизводится на каком-то другом принтере?
(In reply to comment #32) > Пробовал воспроизвести в Гаранте 7.02.1.058 - не > получилось. Сообщения об ошибке нет. > Подсчёт страниц уходит в бесконечность. Видимо текст не влез на 1стр.. > Возможно воспроизводится на каком-то > другом принтере? > Воспроизводится в бутылке garant/garant. Зайти в "Моя информация">"Мои консультации">"Ответы", там 2 документа. На любом из них воспроизводится.
Да, воспроизвёл. Только проблему решить это никак не помогает. Программа использует внутренний алгоритм перехвата исключений, и не выводит ничего в консоль. Пробовал устроить принудительное падение - результат такой же. Пробовал подключаться отладчиком - тоже ничего не выходит. В программе постоянно возникают исключения (возможно специально генерируются), и отладчик так и не доходит до нужного места
Сделал и выложил для скачивания Виртуальную Машину для Гаранта: ftp.etersoft.ru/pub/peoples/baraka/LINUX@Etersoft.rar
Недавно система печати была немного изменена. Хорошо бы ещё раз проверить не исчезла ли бага.
(In reply to comment #36) > Недавно система печати была немного > изменена. > Хорошо бы ещё раз проверить не исчезла ли > бага. > На какой версии проверить?
Скоро выйдет новый релиз 1.0.10-26/19. Вот на нём и хорошо бы проверить.
(In reply to comment #38) > Скоро выйдет новый релиз 1.0.10-26/19. Вот на нём > и хорошо бы проверить. > Ну вот когда выйдет, тогда и проверим.
WINE@Etersoft 1.0 Local 1.0.11-eter1/1 Также уходит в цикл по подсчету страниц.
Корректировка зависимостей.
Печать работает, исправлена за счет решения eterbug#4254 WINE@Etersoft 1.0.11 eter9/eter5
УРА! Надо скачать/потестить.