powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Linux: Segmentation Fault во время dlopen.
21 сообщений из 21, страница 1 из 1
Linux: Segmentation Fault во время dlopen.
    #34623831
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем такая проблема. (хотя неясно, куда это - в "C++", "программирование"
или "линукс").
Пытаюсь выловить глюк в Wine 0.9.39
( линк ).
Проблема сводиться к тому, что во время выполнения dlopen с путем к
wined3d.dll.so происходит Segmentation Fault. Но только в том
случае, если определенная переменная среды не содержит определенного
значения, (WINEDEBUG+=relay) которое включает вывод некоторых дебажных
сообщений, вшитых в код. :-\
Теперь основной вопрос. Как такое отлавливать/отлаживать? По логике
вещей, должен быть аналог DLLMain, в котором глюк, но, насколько знаю,
такового под линуксом нет. Либо же должен существовать callback, который
вызывается при выполнении dlopen и содержит ошибку. Самое интересное, что
проблема появилась неожиданно при апгрейде вайна, и никуда деваться не
собирается (т.е. даунгрейд не помогает), что конкретно я сделал перед
появлением проблемы, восстановить не удается (просто не помню) - до этого
полгода все работало с тем же железом, ядром, и библиотеками (т.е. ничего
не обновлял). Если же это системный баг, а не программный, то не совсем
понятно, каким боком он связан с отладочными сообщениями и переменной среды
WINEDEBUG (если только где-то утечка с повреждением системных данных
происходит, но тогда неясно, почему не помогает даунгрейд). Баг железно
возникает при загрузке wined3d.dll.so, все остальное прекрасно работает.
Буду признателен за помощь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34623947
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErVТеперь основной вопрос. Как такое отлавливать/отлаживать? трассировкой

зы сноси венду… то есть слаку
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34623968
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
судя по всему у тебя есть дебугер, вот и входи в эту dlopen и смотри, чего делается
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624066
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> трассировкой
strace? Уже пробовал.
Там происходит следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
open("/usr/local/bin/../lib/wine/wined3d.dll.so", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\240\0"...,  512 )
=  512 
fstat64( 19 , {st_mode=S_IFREG| 0755 , st_size= 2676510 , ...}) =  0 
mmap2(NULL,  746208 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) =
0x7d70b000
mmap2(0x7d7bc000,  20480 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED
MAP_DENYWRITE,  19 , 0xb1) = 0x7d7bc000
mmap2(0x7d7c1000,  736 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED
MAP_ANONYMOUS, - 1 ,  0 ) = 0x7d7c1000
close( 19 )                               =  0 
open("/usr/local/bin/../lib/libGLU.so.1", O_RDONLY) = - 1  ENOENT (No such
file or directory)
open("/usr/lib/tls/libGLU.so.1", O_RDONLY) = - 1  ENOENT (No such file or
directory)
open("/usr/lib/libGLU.so.1", O_RDONLY)  = - 1  ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)      =  19 
fstat64( 19 , {st_mode=S_IFREG| 0644 , st_size= 105782 , ...}) =  0 
mmap2(NULL,  105782 , PROT_READ, MAP_PRIVATE,  19 ,  0 ) = 0x7d6f1000
close( 19 )                               =  0 
open("/usr/X11R6/lib/libGLU.so.1", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360c\1"...,  512 ) =
 512 
fstat64( 19 , {st_mode=S_IFREG| 0755 , st_size= 562080 , ...}) =  0 
mmap2(NULL,  492780 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) =
0x7d678000
mmap2(0x7d6ef000,  8192 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED
MAP_DENYWRITE,  19 , 0x77) = 0x7d6ef000
close( 19 )                               =  0 
open("/usr/local/bin/../lib/libstdc++.so.6", O_RDONLY) = - 1  ENOENT (No such
file or directory)
open("/usr/lib/tls/libstdc++.so.6", O_RDONLY) = - 1  ENOENT (No such file or
directory)
open("/usr/lib/libstdc++.so.6", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \310\3"...,  512 ) =
 512 
fstat64( 19 , {st_mode=S_IFREG| 0644 , st_size= 908928 , ...}) =  0 
mmap2(NULL,  933796 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) =
0x7d594000
mprotect(0x7d66d000,  44964 , PROT_NONE)  =  0 
mmap2(0x7d66e000,  20480 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED
MAP_DENYWRITE,  19 , 0xd9) = 0x7d66e000
mmap2(0x7d673000,  20388 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED
MAP_ANONYMOUS, - 1 ,  0 ) = 0x7d673000
close( 19 )                               =  0 
open("/usr/local/bin/../lib/libgcc_s.so.1", O_RDONLY) = - 1  ENOENT (No such
file or directory)
open("/usr/lib/tls/libgcc_s.so.1", O_RDONLY) = - 1  ENOENT (No such file or
directory)
open("/usr/lib/libgcc_s.so.1", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\25\0\000"...,
 512 ) =  512 
fstat64( 19 , {st_mode=S_IFREG| 0755 , st_size= 32532 , ...}) =  0 
mmap2(NULL,  34240 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) =
0x7dab3000
mmap2(0x7dabb000,  4096 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED
MAP_DENYWRITE,  19 , 0x7) = 0x7dabb000
close( 19 )                               =  0 
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Если включить перед вызовом WINEDEBUG+=relay, то в этом месте идет то ж
самое, кроме тогО, что вместо SIGSEGV идет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
futex(0x7d674dfc, FUTEX_WAKE,  2147483647 ) =  0 
mmap2(0x7d720000,  4096 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED
MAP_ANONYMOUS, - 1 ,  0 ) = 0x7d720000
rt_sigprocmask(SIG_BLOCK, NULL, [],  8 )  =  0 
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [],  8 ) =  0 
rt_sigprocmask(SIG_SETMASK, [], NULL,  8 ) =  0 
rt_sigprocmask(SIG_BLOCK, NULL, [],  8 )  =  0 
rt_sigprocmask(SIG_BLOCK, NULL, [],  8 )  =  0 
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [],  8 ) =  0 
mprotect(0x7d7c1000,  4096 , PROT_READ|PROT_WRITE|PROT_EXEC) =  0 
....
и т.д.
Ну и адреса, само собой, чуть-чуть различаются

> зы сноси венду? то есть слаку
Винду давно снес, а вот слаку трогать не буду :).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624072
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> судя по всему у тебя есть дебугер, вот и входи в эту dlopen и смотри, чего
> делается
Попробую. Только ведь она не факт что с отладочной информацией скомпилина...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624109
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> судя по всему у тебя есть дебугер, вот и входи в эту dlopen и смотри, чего
> делается
Она без отладочой информации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
0xb7c8ad20 in dlopen@@GLIBC_2. 1  () from /lib/tls/libdl.so. 2 
Wine-gdb> next
Single stepping until exit from function dlopen@@GLIBC_2. 1 ,
which has no line number information.
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet

Program received signal SIGSEGV, Segmentation fault.
0x7d6659ce in __cxa_demangle () from /usr/lib/libstdc++.so. 6 
Можно переставить попробовать, конечно...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624179
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скомпиль как надо

сначала нужно локализовать ошибку

два соображения:
1) адреса для ммапа правильно заданы? 0x7dab3000+34240=0x7dabb5c0>0x7dabb000
2) futex в какой библиотеке лежит, libgcc? Судя по названию __cxa_demangle, оно не может прочитать/записать адрес экспортируемого символа
3) а содержимое стека оно может выдать на момент исключения?
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624285
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> скомпиль как надо
На ней полсистемы завязано, могу грохнуть случайно :). Попробую, впрочем.

> сначала нужно локализовать ошибку
>
> два соображения:
> 1) адреса для ммапа правильно заданы?
> 0x7dab3000+34240=0x7dabb5c0>0x7dabb000
Я не могу на это ответить, вызовы идут автоматом из dlopen после загрузки.
Т.е. это системной код, который "должен" быть правильным.
Последняя строчка, которую я "вижу" в отладчике - это
Код: plaintext
1.
   ret = dlopen( filename, flag | RTLD_FIRST );
filename в момент вызова указывает на wined3d.dll.so, strace, который я
выложил, как раз идет с момента вызова dlopen
Судя по контексту вызовов - это загрузка *.elf образов в память - самой
*.dll.so и нескольких зависимых библиотек.
Вот, собственно, сама функция, откуда вызов происходит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
wine: Unhandled page fault on read access to 0xffffffff at address
0x7d6519ce (thread 002e), starting debugger...
Unhandled exception: page fault on read access to 0xffffffff in  32 -bit code
(0x7d6519ce).
Register dump:
 CS: 0073  SS:007b DS:007b ES:007b FS: 0033  GS:003b
 EIP:7d6519ce ESP:0033e8a8 EBP:00009f80 EFLAGS: 00210246 (   -  00       -RIZP1)
 EAX:0033e8c8 EBX:7d66f000 ECX: 00000000  EDX: 00000000 
 ESI: 01000000  EDI:00001f80
Stack dump:
0x0033e8a8:  0033e8c8  00000000   00000000  b7fccff8
0x0033e8b8:  7d70faa9 7d70faa9 0033ec18 00001f80
0x0033e8c8:   00000000   00000000   00000000   00000000 
0x0033e8d8:   00000000   00000000   00000000   00000000 
0x0033e8e8:   00000000   00000000   00000000   00000000 
0x0033e8f8:   00000000   00000000   00000000   00000000 
Backtrace:
=> 1  0x7d6519ce (0x00009f80)
   2  0x00000000 (0x00000000)
0x7d6519ce:     
Modules:
Module  Address                 Debug info      Name ( 57  modules)
PE        7c0000-  1547000        Deferred        pno0001
ELF     7bf00000-7bf03000       Deferred        <wine-loader>
ELF     7d678000-7d6f1000       Deferred        libglu.so. 1 
ELF     7d70b000-7d7c2000       Deferred        wined3d<elf>
ELF     7d7c2000-7d7ed000       Deferred        d3d9<elf>
ELF     7d7ed000-7d802000       Deferred        midimap<elf>
  \-PE  7d7f0000-7d802000       \               midimap
ELF     7d802000-7d827000       Deferred        msacm32<elf>
  \-PE  7d810000-7d827000       \               msacm32
ELF     7daae000-7dab7000       Deferred        libgcc_s.so. 1 
ELF     7dab7000-7daf2000       Deferred        wineoss<elf>
  \-PE  7dac0000-7daf2000       \               wineoss
ELF     7daf2000-7daf7000       Deferred        libxfixes.so. 3 
ELF     7daf7000-7db00000       Deferred        libxcursor.so. 1 
ELF     7db00000-7db1c000       Deferred        imm32<elf>
  \-PE  7db10000-7db1c000       \               imm32
ELF     7db1c000-7db3a000       Deferred        ximcp.so. 2 
ELF     7db3a000-7db3d000       Deferred        libxinerama.so. 1 
ELF     7db3d000-7db55000       Deferred        msacm32<elf>
  \-PE  7db40000-7db55000       \               msacm32
ELF     7df0a000-7e87c000       Deferred        libglcore.so. 1 
ELF     7e87c000-7e910000       Deferred        libgl.so. 1 
ELF     7e910000-7e9dd000       Deferred        libx11.so. 6 
ELF     7e9dd000-7e9eb000       Deferred        libxext.so. 6 
ELF     7e9eb000-7ea03000       Deferred        libice.so. 6 
ELF     7ea03000-7ea0c000       Deferred        libsm.so. 6 
ELF     7ea0d000-7ea10000       Deferred        xlcdef.so. 2 
ELF     7ea10000-7ea14000       Deferred        libxrandr.so. 2 
ELF     7ea14000-7ea1d000       Deferred        libxrender.so. 1 
ELF     7ea26000-7eaae000       Deferred        winex11<elf>
  \-PE  7ea40000-7eaae000       \               winex11
ELF     7eaae000-7eb2f000       Deferred        libfreetype.so. 6 
ELF     7eb2f000-7eb70000       Deferred        advapi32<elf>
  \-PE  7eb40000-7eb70000       \               advapi32
ELF     7eb70000-7ebff000       Deferred        gdi32<elf>
  \-PE  7eb80000-7ebff000       \               gdi32
ELF     7ebff000-7ed29000       Deferred        user32<elf>
  \-PE  7ec20000-7ed29000       \               user32
ELF     7ed29000-7edb3000       Deferred        winmm<elf>
  \-PE  7ed30000-7edb3000       \               winmm
ELF     7eddf000-7eefc000       Deferred        kernel32<elf>
  \-PE  7ee00000-7eefc000       \               kernel32
ELF     7eefc000-7ef07000       Deferred        libnss_files.so. 2 
ELF     7ef07000-7ef11000       Deferred        libnss_nis.so. 2 
ELF     7ef11000-7ef27000       Deferred        libnsl.so. 1 
ELF     7ef27000-7ef31000       Deferred        libnss_compat.so. 2 
ELF     7ef31000-7ef54000       Deferred        libm.so. 6 
ELF     7ef55000-7ef57000       Deferred        libnvidia-tls.so. 1 
ELF     7ef57000-7ef5c000       Deferred        libxxf86vm.so. 1 
ELF     7ef5c000-7ef6e000       Deferred        libz.so. 1 
ELF     7ef6e000-7f000000       Deferred        ntdll<elf>
  \-PE  7ef80000-7f000000       \               ntdll
ELF     b7d42000-b7d46000       Deferred        libdl.so. 2 
ELF     b7d46000-b7e75000       Deferred        libc.so. 6 
ELF     b7e75000-b7e87000       Deferred        libpthread.so. 0 
ELF     b7ea1000-b7fb5000       Deferred        libwine.so. 1 
ELF     b7fb6000-b7fce000       Deferred        ld-linux.so. 2 
Threads:
process  tid      prio (all id:s are in hex)
0000002d (D) Z:\home\erv\distr\kkreig\pno0001.exe
        0000002e     0  <==
0000000e 
        0000000f     0 
0000000c 
         00000012      0 
         00000011      0 
         00000010      0 
        0000000d     0 
Лично я тут никакого "криминала" не вижу.

> 2) futex в какой библиотеке лежит,
> libgcc? Судя по названию __cxa_demangle, оно не может прочитать/записать
> адрес экспортируемого символа
Как я понял, это функция ядра (man futex):

FUTEX
Section: Linux Programmer's Manual (7)
NAME
futex - Fast Userspace Locking
SYNOPSIS
#include <linux/futex.h>

DESCRIPTION


The Linux kernel provides futexes ('Fast Userspace muTexes') as a building
block for fast userspace locking and semaphores. Futexes are very basic and
lend themselves well for building higher level locking abstractions such as
POSIX mutexes.


> 3) а содержимое стека оно может выдать на
> момент исключения?
Wine вешает свой перехватчик на исключения, который выдает следующее:
[src]
wine: Unhandled page fault on read access to 0xffffffff at address
0x7d6519ce (thread 002e), starting debugger...
Unhandled exception: page fault on read access to 0xffffffff in 32-bit code
(0x7d6519ce).
Register dump:
CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
EIP:7d6519ce ESP:0033e8a8 EBP:00009f80 EFLAGS:00210246( - 00 -RIZP1)
EAX:0033e8c8 EBX:7d66f000 ECX:00000000 EDX:00000000
ESI:01000000 EDI:00001f80
Stack dump:
0x0033e8a8: 0033e8c8 00000000 00000000 b7fccff8
0x0033e8b8: 7d70faa9 7d70faa9 0033ec18 00001f80
0x0033e8c8: 00000000 00000000 00000000 00000000
0x0033e8d8: 00000000 00000000 00000000 00000000
0x0033e8e8: 00000000 00000000 00000000 00000000
0x0033e8f8: 00000000 00000000 00000000 00000000
Backtrace:
=>1 0x7d6519ce (0x00009f80)
2 0x00000000 (0x00000000)
0x7d6519ce:
Modules:
Module Address Debug info Name (57 modules)
PE 7c0000- 1547000 Deferred pno0001
ELF 7bf00000-7bf03000 Deferred <wine-loader>
ELF 7d678000-7d6f1000 Deferred libglu.so.1
ELF 7d70b000-7d7c2000 Deferred wined3d<elf>
ELF 7d7c2000-7d7ed000 Deferred d3d9<elf>
ELF 7d7ed000-7d802000 Deferred midimap<elf>
\-PE 7d7f0000-7d802000 \ midimap
ELF 7d802000-7d827000 Deferred msacm32<elf>
\-PE 7d810000-7d827000 \ msacm32
ELF 7daae000-7dab7000 Deferred libgcc_s.so.1
ELF 7dab7000-7daf2000 Deferred wineoss<elf>
\-PE 7dac0000-7daf2000 \ wineoss
ELF 7daf2000-7daf7000 Deferred libxfixes.so.3
ELF 7daf7000-7db00000 Deferred libxcursor.so.1
ELF 7db00000-7db1c000 Deferred imm32<elf>
\-PE 7db10000-7db1c000 \ imm32
ELF 7db1c000-7db3a000 Deferred ximcp.so.2
ELF 7db3a000-7db3d000 Deferred libxinerama.so.1
ELF 7db3d000-7db55000 Deferred msacm32<elf>
\-PE 7db40000-7db55000 \ msacm32
ELF 7df0a000-7e87c000 Deferred libglcore.so.1
ELF 7e87c000-7e910000 Deferred libgl.so.1
ELF 7e910000-7e9dd000 Deferred libx11.so.6
ELF 7e9dd000-7e9eb000 Deferred libxext.so.6
ELF 7e9eb000-7ea03000 Deferred libice.so.6
ELF 7ea03000-7ea0c000 Deferred libsm.so.6
ELF 7ea0d000-7ea10000 Deferred xlcdef.so.2
ELF 7ea10000-7ea14000 Deferred libxrandr.so.2
ELF 7ea14000-7ea1d000 Deferred libxrender.so.1
ELF 7ea26000-7eaae000 Deferred winex11<elf>
\-PE 7ea40000-7eaae000 \ winex11
ELF 7eaae000-7eb2f000 Deferred libfreetype.so.6
ELF 7eb2f000-7eb70000 Deferred advapi32<elf>
\-PE 7eb40000-7eb70000 \ advapi32
ELF 7eb70000-7ebff000 Deferred gdi32<elf>
\-PE 7eb80000-7ebff000 \ gdi32
ELF 7ebff000-7ed29000 Deferred user32<elf>
\-PE 7ec20000-7ed29000 \ user32
ELF 7ed29000-7edb3000 Deferred winmm<elf>
\-PE 7ed30000-7edb3000 \ winmm
ELF 7eddf000-7eefc000 Deferred kernel32<elf>
\-PE 7ee00000-7eefc000 \ kernel32
ELF 7eefc000-7ef07000 Deferred libnss_files.so.2
ELF 7ef07000-7ef11000 Deferred libnss_nis.so.2
ELF 7ef11000-7ef27000 Deferred libnsl.so.1
ELF 7ef27000-7ef31000 Deferred libnss_compat.so.2
ELF 7ef31000-7ef54000 Deferred libm.so.6
ELF 7ef55000-7ef57000 Deferred libnvidia-tls.so.1
ELF 7ef57000-7ef5c000 Deferred libxxf86vm.so.1
ELF 7ef5c000-7ef6e000 Deferred libz.so.1
ELF 7ef6e000-7f000000 Deferred ntdll<elf>
\-PE 7ef80000-7f000000 \ ntdll
ELF b7d42000-b7d46000 Deferred libdl.so.2
ELF b7d46000-b7e75000 Deferred libc.so.6
ELF b7e75000-b7e87000 Deferred libpthread.so.0
ELF b7ea1000-b7fb5000 Deferred libwine.so.1
ELF b7fb6000-b7fce000 Deferred ld-linux.so.2
Threads:
process tid prio (all id:s are in hex)
0000002d (D) Z:\home\erv\distr\kkreig\pno0001.exe
0000002e 0 <==
0000000e
0000000f 0
0000000c
00000012 0
00000011 0
00000010 0
0000000d 0
[/src]
Кроме этого, в линке, который я выше приводил, есть несколько трейсов,
сессий отладки и т.д. Возможно, что что-то будет полезным.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624291
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV wrote:

> Вот, собственно, сама функция, откуда вызов происходит:
Что-то сглюкнуло. :-\
Вот листинг:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
void *wine_dlopen( const char *filename, int flag, char *error, size_t
errorsize )
{
#ifdef HAVE_DLOPEN
    void *ret;
    const char *s;
    dlerror(); dlerror();
#ifdef __sun
    if (strchr( filename, ':' ))
    {
        char path[PATH_MAX];
        /* Solaris' brain damaged dlopen() treats ':' as a path separator */
        realpath( filename, path );
        ret = dlopen( path, flag | RTLD_FIRST );
    }
    else
#endif
    ret = dlopen( filename, flag | RTLD_FIRST );
    s = dlerror();
    if (error && errorsize)
    {
        if (s)
        {
            size_t len = strlen(s);
            if (len >= errorsize) len = errorsize -  1 ;
            memcpy( error, s, len );
            error[len] =  0 ;
        }
        else error[ 0 ] =  0 ;
    }
    dlerror();
    return ret;
#else
    if (error)
    {
        static const char msg[] = "dlopen interface not detected by
configure";
        size_t len = min( errorsize, sizeof(msg) );
        memcpy( error, msg, len );
        error[len -  1 ] =  0 ;
    }
    return NULL;
#endif
}

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624347
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV> 1) адреса для ммапа правильно заданы?
> 0x7dab3000+34240=0x7dabb5c0>0x7dabb000
Я не могу на это ответить, вызовы идут автоматом из dlopen после загрузки.
Т.е. это системной код, который "должен" быть правильным.просто эти области памяти перекрываются. Это нормально?

Содержимое стека я хотел, чтобы увидеть, что там вызывается между close и вылетом
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624408
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> просто эти области памяти перекрываются. Это нормально?
Пока что не могу сказать. Посмотрю "рабочий" трейс, где была объявлена
переменная WINEDEBUG и отпишусь.

> Содержимое стека я хотел, чтобы увидеть, что там вызывается между close и
> вылетом
Вот содержимое стека на момент вызова последнего close
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
#0  0xb7fda770 in close () from /lib/ld-linux.so.2
#1  0xb7fcea27 in _dl_map_object_from_fd () from /lib/ld-linux.so.2
#2  0xb7fcfcc3 in _dl_map_object () from /lib/ld-linux.so.2
#3  0xb7fd3b78 in openaux () from /lib/ld-linux.so.2
#4  0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#5  0xb7fd3e1a in _dl_map_object_deps () from /lib/ld-linux.so.2
#6  0xb7e56736 in dl_open_worker () from /lib/tls/libc.so.6
#7  0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#8  0xb7e57378 in _dl_open () from /lib/tls/libc.so.6
#9  0xb7d55d0d in dlopen_doit () from /lib/tls/libdl.so.2
#10 0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#11 0xb7d5631b in _dlerror_run () from /lib/tls/libdl.so.2
#12 0xb7d55d5d in dlopen@@GLIBC_2.1 () from /lib/tls/libdl.so.2
#13 0xb7eba27f in wine_dlopen
(filename=0x7c0538a4 "/usr/local/bin/../lib/wine/wined3d.dll.so", flag=2,
error=0x34f0b8 "", errorsize=256)
    at loader.c:703
#14 0xb7eba347 in dlopen_dll (name=0x0, error=0x34f0b8 "", errorsize=256,
test_only=0, exists=0x34ef84) at loader.c:239
#15 0x7efa5c20 in load_builtin_dll (load_path=0x0, path=0x34f208, file=0x0,
flags=0, pwm=0x0) at loader.c:1490
#16 0x7efa8e5f in load_dll (load_path=0x115588, libname=0x34f2f8, flags=0,
pwm=0x34f2f0) at loader.c:1721
#17 0x7efa7d4f in fixup_imports (wm=0x15d0a8, load_path=0x115588) at
loader.c:476
#18 0x7efa8598 in load_builtin_callback (module=0x7d7d0000,
filename=0x7d7e5b20 "d3d9.dll") at loader.c:1289
#19 0xb7eb9eb3 in __wine_dll_register (header=0x0, filename=0x7c054128 "")
at loader.c:449
#20 0x7d7e5a60 in __wine_spec_init () at init.c:35
#21 0xb7fd52a8 in _dl_init_internal () from /lib/ld-linux.so.2
#22 0xb7e56990 in dl_open_worker () from /lib/tls/libc.so.6
#23 0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#24 0xb7e57378 in _dl_open () from /lib/tls/libc.so.6
#25 0xb7d55d0d in dlopen_doit () from /lib/tls/libdl.so.2
#26 0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#27 0xb7d5631b in _dlerror_run () from /lib/tls/libdl.so.2
#28 0xb7d55d5d in dlopen@@GLIBC_2.1 () from /lib/tls/libdl.so.2
#29 0xb7eba27f in wine_dlopen
(filename=0x7c0534a1 "/usr/local/bin/../lib/wine/d3d9.dll.so", flag=2,
    error=0x34fa08 "/home/erv/.wine/dosdevices/c:/windows/system32/d3d9.dll:
invalid ELF header", errorsize=256) at loader.c:703
#30 0xb7eba347 in dlopen_dll (name=0x0,
error=0x34fa08 "/home/erv/.wine/dosdevices/c:/windows/system32/d3d9.dll:
invalid ELF header",
    errorsize=256, test_only=0, exists=0x34f8d4) at loader.c:239
#31 0x7efa5c20 in load_builtin_dll (load_path=0x0, path=0x34fb58, file=0x0,
flags=0, pwm=0x0) at loader.c:1490
#32 0x7efa9074 in load_dll (load_path=0x115588, libname=0x7ffdcc00, flags=0,
pwm=0x34fbd0) at loader.c:1725
#33 0x7efa9167 in LdrLoadDll (path_name=0x115588, flags=0, libname=0x0,
hModule=0x0) at loader.c:1768
#34 0x7ee7257e in load_library (libname=0x34fe48, flags=1136008) at
module.c:870
#35 0x7ee727cf in LoadLibraryExW (libnameW=0x7ffdcc00, hfile=0x0, flags=0)
at module.c:927
#36 0x7ee728c6 in LoadLibraryExA (libname=0x81f2fc "d3d9.dll", hfile=0x0,
flags=0) at module.c:907
#37 0x7ee72900 in LoadLibraryA (libname=0x81f2fc "d3d9.dll") at module.c:959
#38 0x0080520e in ?? ()
#39 0x0081f2fc in ?? ()
#40 0x007362bc in ?? ()
#41 0x007f5dfe in ?? ()
#42 0x007e3fa5 in ?? ()
#43 0x0034fee8 in ?? ()
---Type <return> to continue, or q <return> to quit---
#44 0x7efa372d in RtlAllocateHeap (heap=0x81f000, flags=2129126945,
size=2147348480) at heap.c:1175
#45 0x0080545f in ?? ()
#46 0x0081f000 in ?? ()
#47 0x7ee7e621 in start_process (arg=0x7f636e) at process.c:820
#48 0x007f6095 in ?? ()
#49 0x007f636e in ?? ()
#50 0x007f6468 in ?? ()
#51 0x007f666a in ?? ()
#52 0x007f6871 in ?? ()
#53 0x007f87aa in ?? ()
#54 0x007f8b5d in ?? ()
#55 0x007f8c4d in ?? ()
#56 0x007f95d5 in ?? ()
#57 0x007fa3ee in ?? ()
#58 0x007fa754 in ?? ()
#59 0x007fbc88 in ?? ()
#60 0x007fdab8 in ?? ()
#61 0x007fe8d4 in ?? ()
#62 0x007feaff in ?? ()
#63 0x007ff45f in ?? ()
#64 0x007ff999 in ?? ()
#65 0x0080085d in ?? ()
#66 0x00800916 in ?? ()
#67 0x00801000 in ?? ()
#68 0x00800ffc in ?? ()
#69 0x0001dce1 in ?? ()
#70 0x00000000 in ?? ()

А вот состояние непосредственно перед вылетом(это копипаст из истории
консоли дебаггера):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
Run till exit from #0  0xb7fd3e1a in _dl_map_object_deps ()
from /lib/ld-linux.so.2
trying to process a verbose packet
0xb7e56736 in dl_open_worker () from /lib/tls/libc.so.6
Wine-gdb> info stack
#0  0xb7e56736 in dl_open_worker () from /lib/tls/libc.so.6
#1  0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#2  0xb7e57378 in _dl_open () from /lib/tls/libc.so.6
#3  0xb7d55d0d in dlopen_doit () from /lib/tls/libdl.so.2
#4  0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#5  0xb7d5631b in _dlerror_run () from /lib/tls/libdl.so.2
#6  0xb7d55d5d in dlopen@@GLIBC_2.1 () from /lib/tls/libdl.so.2
#7  0xb7eba27f in wine_dlopen
(filename=0x7c0538a4 "/usr/local/bin/../lib/wine/wined3d.dll.so", flag=2,
error=0x34f0b8 "", errorsize=256)
    at loader.c:703
#8  0xb7eba347 in dlopen_dll (name=0x0, error=0x34f0b8 "", errorsize=256,
test_only=0, exists=0x34ef84) at loader.c:239
#9  0x7efa5c20 in load_builtin_dll (load_path=0x0, path=0x34f208, file=0x0,
flags=0, pwm=0x0) at loader.c:1490
#10 0x7efa8e5f in load_dll (load_path=0x115588, libname=0x34f2f8, flags=0,
pwm=0x34f2f0) at loader.c:1721
#11 0x7efa7d4f in fixup_imports (wm=0x15d0a8, load_path=0x115588) at
loader.c:476
#12 0x7efa8598 in load_builtin_callback (module=0x7d7d0000,
filename=0x7d7e5b20 "d3d9.dll") at loader.c:1289
#13 0xb7eb9eb3 in __wine_dll_register (header=0x0,
filename=0x7c054420 "\b9\005|Pu\002|Пw\002|\230z\002|Х;\005|\020п\002
@}\002|Ю\177\002|")
    at loader.c:449
#14 0x7d7e5a60 in __wine_spec_init () at init.c:35
#15 0xb7fd52a8 in _dl_init_internal () from /lib/ld-linux.so.2
#16 0xb7e56990 in dl_open_worker () from /lib/tls/libc.so.6
#17 0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#18 0xb7e57378 in _dl_open () from /lib/tls/libc.so.6
#19 0xb7d55d0d in dlopen_doit () from /lib/tls/libdl.so.2
#20 0xb7fd507e in _dl_catch_error () from /lib/ld-linux.so.2
#21 0xb7d5631b in _dlerror_run () from /lib/tls/libdl.so.2
#22 0xb7d55d5d in dlopen@@GLIBC_2.1 () from /lib/tls/libdl.so.2
#23 0xb7eba27f in wine_dlopen
(filename=0x7c0534a1 "/usr/local/bin/../lib/wine/d3d9.dll.so", flag=2,
    error=0x34fa08 "/home/erv/.wine/dosdevices/c:/windows/system32/d3d9.dll:
invalid ELF header", errorsize=256) at loader.c:703
#24 0xb7eba347 in dlopen_dll (name=0x0,
error=0x34fa08 "/home/erv/.wine/dosdevices/c:/windows/system32/d3d9.dll:
invalid ELF header",
    errorsize=256, test_only=0, exists=0x34f8d4) at loader.c:239
#25 0x7efa5c20 in load_builtin_dll (load_path=0x0, path=0x34fb58, file=0x0,
flags=0, pwm=0x0) at loader.c:1490
#26 0x7efa9074 in load_dll (load_path=0x115588, libname=0x7ffdcc00, flags=0,
pwm=0x34fbd0) at loader.c:1725
#27 0x7efa9167 in LdrLoadDll (path_name=0x115588, flags=0, libname=0x0,
hModule=0x0) at loader.c:1768
#28 0x7ee7257e in load_library (libname=0x34fe48, flags=1136008) at
module.c:870
#29 0x7ee727cf in LoadLibraryExW (libnameW=0x7ffdcc00, hfile=0x0, flags=0)
at module.c:927
#30 0x7ee728c6 in LoadLibraryExA (libname=0x81f2fc "d3d9.dll", hfile=0x0,
flags=0) at module.c:907
#31 0x7ee72900 in LoadLibraryA (libname=0x81f2fc "d3d9.dll") at module.c:959
#32 0x0080520e in ?? ()
#33 0x0081f2fc in ?? ()
#34 0x007362bc in ?? ()
#35 0x007f5dfe in ?? ()
#36 0x007e3fa5 in ?? ()
#37 0x0034fee8 in ?? ()
#38 0x7efa372d in RtlAllocateHeap (heap=0x81f000, flags=2129126945,
size=2147348480) at heap.c:1175
#39 0x0080545f in ?? ()
#40 0x0081f000 in ?? ()
#41 0x7ee7e621 in start_process (arg=0x7f636e) at process.c:820
#42 0x007f6095 in ?? ()
---Type <return> to continue, or q <return> to quit---
#43 0x007f636e in ?? ()
#44 0x007f6468 in ?? ()
#45 0x007f666a in ?? ()
#46 0x007f6871 in ?? ()
#47 0x007f87aa in ?? ()
#48 0x007f8b5d in ?? ()
#49 0x007f8c4d in ?? ()
#50 0x007f95d5 in ?? ()
#51 0x007fa3ee in ?? ()
#52 0x007fa754 in ?? ()
#53 0x007fbc88 in ?? ()
#54 0x007fdab8 in ?? ()
#55 0x007fe8d4 in ?? ()
#56 0x007feaff in ?? ()
#57 0x007ff45f in ?? ()
#58 0x007ff999 in ?? ()
#59 0x0080085d in ?? ()
#60 0x00800916 in ?? ()
#61 0x00801000 in ?? ()
#62 0x00800ffc in ?? ()
#63 0x0001dce1 in ?? ()
#64 0x00000000 in ?? ()
Wine-gdb> finish
Run till exit from #0  0xb7e56736 in dl_open_worker ()
from /lib/tls/libc.so.6
trying to process a verbose packet
trying to process a verbose packet
trying to process a verbose packet

Program received signal SIGSEGV, Segmentation fault.
0x7d6519ce in __cxa_demangle () from /usr/lib/libstdc++.so.6
Wine-gdb>                                                    

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624428
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> просто эти области памяти перекрываются. Это нормально?
Вот кусок рабочего лога - т.е. когда программа не вылетает, (т.е. была объявлена WINEDEBUG+=relay)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
execve("/usr/local/bin/wine", ["wine", "pno0001.exe"], [/* 52 vars */]) =  0 
uname({sys="Linux", node="localhost", ...}) =  0 
brk( 0 )                                  = 0x804a000
readlink("/proc/self/exe", "/usr/local/bin/wine",  4096 ) =  19 
access("/etc/ld.so.preload", R_OK)      = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/tls/i686/sse2/libwine.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/local/bin/../lib/tls/i686/sse2", 0xbfa007f0) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/tls/i686/libwine.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/local/bin/../lib/tls/i686", 0xbfa007f0) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/tls/sse2/libwine.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/local/bin/../lib/tls/sse2", 0xbfa007f0) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/tls/libwine.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/local/bin/../lib/tls", 0xbfa007f0) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/i686/sse2/libwine.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/local/bin/../lib/i686/sse2", 0xbfa007f0) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/i686/libwine.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/local/bin/../lib/i686", 0xbfa007f0) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/sse2/libwine.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/local/bin/../lib/sse2", 0xbfa007f0) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/libwine.so.1", O_RDONLY) =  4 
read( 4 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@.\0\000"...,  512 ) =  512 
fstat64( 4 , {st_mode=S_IFREG| 0755 , st_size= 1191426 , ...}) =  0 
mmap2(NULL,  4096 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, - 1 ,  0 ) = 0xb7f15000
mmap2(NULL,  1129760 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  4 ,  0 ) = 0xb7e01000
mmap2(0xb7f00000,  8192 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  4 , 0xfe) = 0xb7f00000
mmap2(0xb7f02000,  77088 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, - 1 ,  0 ) = 0xb7f02000
close( 4 )                                =  0 
open("/usr/local/bin/../lib/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/i686/sse2/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib/tls/i686/sse2", 0xbfa007d4) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/i686/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib/tls/i686", 0xbfa007d4) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/sse2/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib/tls/sse2", 0xbfa007d4) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib/tls", {st_mode=S_IFDIR| 0755 , st_size= 4096 , ...}) =  0 
open("/usr/lib/i686/sse2/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib/i686/sse2", 0xbfa007d4) = - 1  ENOENT (No such file or directory)
open("/usr/lib/i686/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib/i686", 0xbfa007d4)     = - 1  ENOENT (No such file or directory)
open("/usr/lib/sse2/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib/sse2", 0xbfa007d4)     = - 1  ENOENT (No such file or directory)
open("/usr/lib/libpthread.so.0", O_RDONLY) = - 1  ENOENT (No such file or directory)
stat64("/usr/lib", {st_mode=S_IFDIR| 0755 , st_size= 32768 , ...}) =  0 
open("/etc/ld.so.cache", O_RDONLY)      =  4 
fstat64( 4 , {st_mode=S_IFREG| 0644 , st_size= 105782 , ...}) =  0 
mmap2(NULL,  105782 , PROT_READ, MAP_PRIVATE,  4 ,  0 ) = 0xb7de7000
close( 4 )                                =  0 
open("/lib/tls/libpthread.so.0", O_RDONLY) =  4 
read( 4 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20H\0\000"...,  512 ) =  512 
fstat64( 4 , {st_mode=S_IFREG| 0755 , st_size= 88005 , ...}) =  0 
mmap2(NULL,  70104 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  4 ,  0 ) = 0xb7dd5000
mmap2(0xb7de3000,  8192 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  4 , 0xd) = 0xb7de3000
mmap2(0xb7de5000,  4568 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, - 1 ,  0 ) = 0xb7de5000
close( 4 )                                =  0 
open("/usr/local/bin/../lib/libc.so.6", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/libc.so.6", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/libc.so.6", O_RDONLY)    = - 1  ENOENT (No such file or directory)
open("/lib/tls/libc.so.6", O_RDONLY)    =  4 
read( 4 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20O\1\000"...,  512 ) =  512 
fstat64( 4 , {st_mode=S_IFREG| 0755 , st_size= 1441201 , ...}) =  0 
mmap2(NULL,  1240284 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  4 ,  0 ) = 0xb7ca6000
mmap2(0xb7dcf000,  16384 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  4 , 0x128) = 0xb7dcf000
mmap2(0xb7dd3000,  7388 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, - 1 ,  0 ) = 0xb7dd3000
close( 4 )                                =  0 
open("/usr/local/bin/../lib/libdl.so.2", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/local/bin/../lib/libdl.so.2", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/libdl.so.2", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/libdl.so.2", O_RDONLY)   = - 1  ENOENT (No such file or directory)
open("/lib/tls/libdl.so.2", O_RDONLY)   =  4 
read( 4 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\v\0"...,  512 ) =  512 
fstat64( 4 , {st_mode=S_IFREG| 0755 , st_size= 13120 , ...}) =  0 
mmap2(NULL,  12392 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  4 ,  0 ) = 0xb7ca2000
mmap2(0xb7ca4000,  8192 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  4 , 0x1) = 0xb7ca4000
close( 4 )                                =  0 
mmap2(NULL,  4096 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, - 1 ,  0 ) = 0xb7ca1000
mprotect(0xb7dcf000,  4096 , PROT_READ)   =  0 
set_thread_area({entry_number:- 1  ->  6 , base_addr:0xb7ca1940, limit: 1048575 , seg_32bit: 1 , contents: 0 , read_exec_only: 0 , limit_in_pages: 1 , seg_not_present: 0 , useable: 1 }) =  0 
munmap(0xb7de7000,  105782 )              =  0 
set_tid_address(0xb7ca1988)             =  11410 
rt_sigaction(SIGRTMIN, {0xb7dd93a0, [], SA_SIGINFO}, NULL,  8 ) =  0 
rt_sigaction(SIGRT_1, {0xb7dd9420, [], SA_RESTART|SA_SIGINFO}, NULL,  8 ) =  0 
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL,  8 ) =  0 
getrlimit(RLIMIT_STACK, {rlim_cur= 8192 * 1024 , rlim_max=RLIM_INFINITY}) =  0 
_sysctl({{CTL_KERN, KERN_VERSION},  2 , 0xbfa00ebc,  31 , (nil),  0 }) =  0 
ПОка что сижу и смотрю пересечения областей...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624435
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV wrote:

> ПОка что сижу и смотрю пересечения областей...
Прошу прощения. Не тот кусок лога. Вот правильны:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
open("/usr/local/bin/../lib/wine/wined3d.dll.so", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\240\0"...,  512 ) =  512 
fstat64( 19 , {st_mode=S_IFREG| 0755 , st_size= 2676510 , ...}) =  0 
mmap2(NULL,  746208 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) = 0x7d70c000
mmap2(0x7d7bd000,  20480 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  19 , 0xb1) = 0x7d7bd000
mmap2(0x7d7c2000,  736 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, - 1 ,  0 ) = 0x7d7c2000
close( 19 )                               =  0 
open("/usr/local/bin/../lib/libGLU.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/libGLU.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/libGLU.so.1", O_RDONLY)  = - 1  ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      =  19 
fstat64( 19 , {st_mode=S_IFREG| 0644 , st_size= 105782 , ...}) =  0 
mmap2(NULL,  105782 , PROT_READ, MAP_PRIVATE,  19 ,  0 ) = 0x7d6f2000
close( 19 )                               =  0 
open("/usr/X11R6/lib/libGLU.so.1", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360c\1"...,  512 ) =  512 
fstat64( 19 , {st_mode=S_IFREG| 0755 , st_size= 562080 , ...}) =  0 
mmap2(NULL,  492780 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) = 0x7d679000
mmap2(0x7d6f0000,  8192 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  19 , 0x77) = 0x7d6f0000
close( 19 )                               =  0 
open("/usr/local/bin/../lib/libstdc++.so.6", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/libstdc++.so.6", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/libstdc++.so.6", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \310\3"...,  512 ) =  512 
fstat64( 19 , {st_mode=S_IFREG| 0644 , st_size= 908928 , ...}) =  0 
mmap2(NULL,  933796 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) = 0x7d595000
mprotect(0x7d66e000,  44964 , PROT_NONE)  =  0 
mmap2(0x7d66f000,  20480 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  19 , 0xd9) = 0x7d66f000
mmap2(0x7d674000,  20388 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, - 1 ,  0 ) = 0x7d674000
close( 19 )                               =  0 
open("/usr/local/bin/../lib/libgcc_s.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/tls/libgcc_s.so.1", O_RDONLY) = - 1  ENOENT (No such file or directory)
open("/usr/lib/libgcc_s.so.1", O_RDONLY) =  19 
read( 19 , "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\25\0\000"...,  512 ) =  512 
fstat64( 19 , {st_mode=S_IFREG| 0755 , st_size= 32532 , ...}) =  0 
mmap2(NULL,  34240 , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE,  19 ,  0 ) = 0x7daae000
mmap2(0x7dab6000,  4096 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,  19 , 0x7) = 0x7dab6000
close( 19 )                               =  0 
futex(0x7d674dfc, FUTEX_WAKE,  2147483647 ) =  0 
mmap2(0x7d720000,  4096 , PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, - 1 ,  0 ) = 0x7d720000
rt_sigprocmask(SIG_BLOCK, NULL, [],  8 )  =  0 
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [],  8 ) =  0 
rt_sigprocmask(SIG_SETMASK, [], NULL,  8 ) =  0 
rt_sigprocmask(SIG_BLOCK, NULL, [],  8 )  =  0 
rt_sigprocmask(SIG_BLOCK, NULL, [],  8 )  =  0 
rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [],  8 ) =  0 

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624484
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я смотрю, ты ориентировался на _dl_map_object_deps, а то же для __cxa_demangle проделать можешь? Хотя она наверно очень часто вызывается.

хмм… видимо это нормально, что области пересекаются.
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624504
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но вообще в системные библиотеки втыкать умрёшь
перекомпилировал wined3d?
Спроси тех чуваков, как вообще может WINEDEBUG повлиять на dlopen, причём в рантайме.
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624560
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> я смотрю, ты ориентировался на _dl_map_object_deps,
Я немного по-другому сделал - поставил бряк на wine_dlopen, когда в
параметрах был путь к wined3d.dll.so, поставил бряк на close, потом оттуда
выходил finish'ем, параллельно печатая стек, пока не вылетело.

> а то же для __cxa_demangle проделать можешь? Хотя она наверно очень часто
вызывается.
Неа :( На неё бряк нельзя поставить. Если библиотеку перекомпилю с
отладочным флагом, то тогда можно будет...

>но вообще в системные библиотеки втыкать умрёшь
+1 :)

>перекомпилировал wined3d?
Пересобрал. Ему пофигу. Я уже
переставлял дрова на видео с последующей пересборкой вчера - ноль эмоций.
Сейчас пересобрал ядро, убил мусор в виде устарвеших модулей (наконец-то
все это в пакет собрал) и переставил libc из пакетов - разницы никакой.
(можно ещё компилятор проверить...)

>Спроси тех чуваков, как вообще может WINEDEBUG повлиять на dlopen, причём в
>рантайме.
спрошу, хотя по идее он влиять не должен - dlopen это системная функция.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624583
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по регистрам такое ощущение, что это null pointer exception, так что баг, только чей?
Похоже на доступ к edx-1, хм… странно (это только предположение)
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624590
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоп. Судя по логам, у меня два варианта libc.so.6 - один в /lib/tls а
второй в /lib, причем они разного размера, хотя версия одна. Это так и
должно быть? То же самое касается ld-2.3.6.so и прочего... Все что,
в /lib/tls - короче на пару сотен байтов...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624599
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как же это?
Код: plaintext
1.
2.
3.
open("/usr/local/bin/../lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/libc.so.6", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/lib/tls/libc.so.6", O_RDONLY)    = 4

Вобще он много прямо из /usr/lib тащит
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624600
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV wrote:

> Стоп. Судя по логам, у меня два варианта libc.so.6 - один в /lib/tls а
> второй в /lib, причем они разного размера, хотя версия одна. Это так и
> должно быть? То же самое касается ld-2.3.6.so и прочего... Все что,
> в /lib/tls - короче на пару сотен байтов...
Все, вроде бы, примерно разобрался...
http://ecos.sourceware.org/ml/libc-alpha/2005-08/msg00028.html
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Linux: Segmentation Fault во время dlopen.
    #34624606
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> open("/usr/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
> directory)
В /usr/lib libc.so.6 нет. А вот в /lib она есть. Но, похоже, это к делу не
относится, так как из lib открывается только ld-linux.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Linux: Segmentation Fault во время dlopen.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]