Summary: | Не работает resolve из-под WINE приложений на ALTLinux 64 | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Денис Баранов <baraka> |
Component: | Сетевые возможности ; TCP/IP | Assignee: | Devaev Maxim <mdevaev> |
Status: | CLOSED FIXED | QA Contact: | Денис Баранов <baraka> |
Severity: | minor | ||
Priority: | P4 | CC: | amorozov, lav, night |
Version: | 1.0.12 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | ALT Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 5991 |
Description
Денис Баранов
2010-07-06 15:57:10 MSD
Для проверки использовал код с примером из MSDN: http://msdn.microsoft.com/en-us/library/ms738524(VS.85).aspx , который так же воспроизвел данную проблему. Она заключалась в неработающих функциях gethostbyname и gethostbyaddr. В dll socket.c они использовали линуксовые gethostbyname_r и gethostbyaddr_r После отладок я выяснил, что ping.exe.so слинкован только с такими либами: ---------- [mdevaev@builder64 ping]$ ldd ping.exe.so libwine.so.1 => /usr/lib/libwine.so.1 (0xb7e5a000) libc.so.6 => /lib/libc.so.6 (0xb7d02000) libdl.so.2 => /lib/libdl.so.2 (0xb7cfd000) /lib/ld-linux.so.2 (0x00477000) ---------- Функции gethostbyname_r и gethostbyaddr_r находились в libnss.so, которая динамически подгружается в glibc. Пути загрузки выглядели так: ---------- open("/lib/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/i686/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) ---------- То есть, программа пыталась получить доступ к 32-битным либам. В случае использования builder64 эти либы не были установлены. Проблема решилась установкой пакета glibc-nss.i586. Принято. |