WINE@Etersoft 1.0 Network релиз 1.0.8 Ubuntu/7.10 В терминальном сеансе (проверялось на Xming и Thinstuff lxserver) при вставке из буфера обмена текста *не содержащего* символы кириллицы wine аварийно завершает работу. Это происходит только с wine-придлжениями. Нативные приложения, например gedit, работают нормально. Backtrace: =>1 0x7f28fefc in winex11 (+0xfefc) (0x7fafee68) 2 0x7f29276e in winex11 (+0x1276e) (0x7fafef58) 3 0x7f2937ee X11DRV_GetClipboardData+0x29e() in winex11 (0x7fafefa8) 4 0x7f724b86 GetClipboardData+0x96() in user32 (0x7fafefe8) 5 0x7f746e5b in user32 (+0x46e5b) (0x7faff028) 6 0x7f7486a9 in user32 (+0x486a9) (0x7faff0a8) 7 0x7f749e4a EditWndProcW+0x1a() in user32 (0x7faff0c8) 8 0x7f7942da WINPROC_wrapper+0x1a() in user32 (0x7faff0f8) 9 0x7f7949b3 WINPROC_wrapper+0x6f3() in user32 (0x7faff138) 10 0x7f7994fe in user32 (+0x994fe) (0x7faff178) 11 0x7f76753b in user32 (+0x6753b) (0x7faff1e8) 12 0x7f76a83e in user32 (+0x6a83e) (0x7faff238) 13 0x7f76ac6a SendMessageW+0x4a() in user32 (0x7faff278) 14 0x7fb18b3b DIALOG_EditPaste+0x2b() in notepad (0x7faff298) 15 0x7fb1b706 in notepad (+0xb706) (0x7faff4e8) 16 0x7f7942da WINPROC_wrapper+0x1a() in user32 (0x7faff518) 17 0x7f7949b3 WINPROC_wrapper+0x6f3() in user32 (0x7faff558) 18 0x7f7994fe in user32 (+0x994fe) (0x7faff598) 19 0x7f76753b in user32 (+0x6753b) (0x7faff608) 20 0x7f76a83e in user32 (+0x6a83e) (0x7faff658) 21 0x7f76ac6a SendMessageW+0x4a() in user32 (0x7faff698) 22 0x7f75e44b in user32 (+0x5e44b) (0x7faff6e8) 23 0x7f75e5df TranslateAcceleratorW+0xef() in user32 (0x7faff718) 24 0x7fb1a7b2 WinMain+0x572() in notepad (0x7faffe48) 25 0x7fb1bead main+0x8d() in notepad (0x7faffec8) 26 0x7fb1bdec in notepad (+0xbdec) (0x7fafff08) 27 0x7fcef430 in kernel32 (+0x4f430) (0x7fafffe8) 28 0xb7e30a97 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000
Можно по конкретней способ достижения баги? А именно откуда происходит вставка и куда.
На клиентской машине Windows XP Professional копирую в буфер обмена текст из любого приложения. Затем вставляю его в любое поле ввода приложения, запущенного в терминальном сеансе. Кириллица - вставляется нормально. Кириллица+латиница - вставляется только кириллица. Латиница - аварийное завершение wine.
Тестировал на NX Client в WinXp порблема не воспроизвелась. Наверно нужны ваши логи. Либо попробуйте установить бета версию wine 1.0.9
Какие именно логи нужны?
Похожая ошибка уже была и ее исправляли. Вы можете прислать нам лог, полученный такой командой WINEDEBUG=+clipboard winelog program.exe Либо установить версию wine 1.0.9 (скорее всего в ней будет все хорошо).
Установил FreeNX (сборка RX@Etersoft). С NX такой проблемы нет. Но есть другая. При копировании текста в буфер обмена из wine-приложения в окне NX клиента, в локальные приложения на XP ничего не вставляется, как будто буфер пустой. Остальные операции с буфером работают нормально. Установил версию 1.0.9. В поведении FreeNX и Xming ничего не изменилось. Лог высылаю на e-mail <baraka@etersoft.ru>
Created attachment 670 [details] лог
(In reply to comment #6) > При копировании текста в буфер обмена из > wine-приложения в окне NX клиента, в локальные > приложения на XP ничего не вставляется, как > будто буфер пустой. Остальные операции с > буфером работают нормально. это проблема nxclient обсуждение и лекарство здесь http://unixforum.org/index.php?showtopic=64076
Действительно, у nxclient и Xming в многооконном режиме есть проблемы с буфером обмена. Но буфер обмена Xming в *одном окне* с нативными приложениями линукса работает нормально. Например с gedit. А поведение приложений, запущенных под wine см. Комментарий #2 от Alexander Moisseev 2008-08-19 15:41:03.
Судя по логам wine падает из-за попытки обратиться к нулевому указателю. trace:clipboard:X11DRV_CLIPBOARD_ReadSelectionData Requesting conversion of L"COMPOUND_TEXT" property (227) from selection type 000000df trace:clipboard:X11DRV_CLIPBOARD_ImportCompoundText Importing 0 line(s) wine: Unhandled page fault on read access to 0x00000000 at address 0x7e590814 (thread 0009), starting debugger... Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x7e590814). В функции X11DRV_CLIPBOARD_ImportCompoundText , есть строки следующего содержания: XmbTextPropertyToTextList(display, &txtprop, &srcstr, &count); wine_tsx11_unlock(); TRACE("Importing %d line(s)\n", count); /* Compute number of lines */ srclen = strlen(srcstr[0]); for (i = 0, lcount = 0; i <= srclen; i++) { if (srcstr[0][i] == '\n') lcount++; } По логам видно, что XmbTextPropertyToTextList вернула в переменной count = 0, а значит список строк пуст. Далее без всяких проверок идет обращение к первой строке в списке: srclen = strlen(srcstr[0]); где мы и получаем ошибку и падение. На мой взгляд, необходимо в этом месте сделать патч с проверкой переменной count, и если она не равна нулю, тогда работать дальше.
У меня никак не воспроизводится. Денис, уточни, пожалуйста.
(In reply to comment #10) > На мой взгляд, необходимо в этом месте > сделать патч с проверкой переменной count, и > если она не равна нулю, тогда работать > дальше. > Наверное правильнее srcstr проверять на валидность или смотреть на возвращаемое значение функции.
(In reply to comment #11) > У меня никак не воспроизводится. Денис, > уточни, пожалуйста. > Воспроизводить надо через Xming, т.к. работа с ним у нас не настроена я не тестировал это. А вот бага с NXClient у нас воспроизводится.
По мотивам комментариев Вани и Толи сделал патч. Патч отправлен в обе рассылки wine-patches@ commit 137f6695cbe3f91a9a29d1abd54ef14170c4922e Author: Vitaly Lipatov <lav@etersoft.ru> Date: Mon Nov 24 23:06:40 2008 +0300 WINEX11: add check for XmbTextPropertyToTextList result