wrar@wrars-comp ~ $ xine-list application/annodex;application/x-annodex;audio/annodex;audio/x-annodex;video/ annodex;video/x-annodex;image/png;image/x-png;video/mng;video/x-mng;audio/ x-8svx;audio/8svx;audio/x-16sv;audio/168sv;image/x-ilbm;image/ilbm;video/x- anim;video/anim;video/x-ms-asf;video/x-ms-wmv;audio/x-ms-wma;application/vnd.ms- asf;application/x-mplayer2;video/x-ms-asf-plugin;video/x-ms-wvx;video/x-ms- wax;audio/x-aiff;audio/aiff;audio/x-pn-aiff;audio/x-flac;audio/flac;audio/x- realaudio;audio/basic;audio/x-basic;audio/x-pn-au;video/msvideo;video/x- msvideo;video/x-flic;video/x-flv;video/flv;application/x-flash- video;application/ogg;application/x-ogg;application/x-ogm;application/x-ogm- audio;application/x-ogm-video;audio/ogg;audio/x-ogg;video/ogg;video/x-ogg;video/ quicktime;video/x-quicktime;video/3gpp;video/mp4;audio/mp4;audio/x- m4a;application/x-quicktimeplayer;audio/x-pn-realaudio;audio/x-pn-realaudio- plugin;audio/x-real-audio;application/vnd.rn-realmedia;video/mkv;video/x- matroska;video/mpeg;video/x-mpeg;audio/x-wav;audio/wav;audio/x-pn-wav;audio/x- pn-windows-acm;audio/mpeg2;audio/x-mpeg2;audio/mpeg3;audio/x-mpeg3;audio/ mpeg;audio/x-mpeg;audio/x-mpegurl;audio/mpegurl;audio/mp3;audio/x-mp3;audio/x- wavpack; wrar@wrars-comp ~ $ sudo /usr/bin/xine-list zsh: segmentation fault sudo /usr/bin/xine-list wrar@wrars-comp ~ $ sudo strace -Ff /usr/bin/xine-list [...] open("/usr/lib/xine/plugins/1.21/xineplug_inp_dvd.so", O_RDONLY) = 3 read(3, "\177ELF \1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\27\0\0004\0\0\0\320"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=167352, ...}) = 0 mmap2(NULL, 170308, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f2f000 mmap2(0xb7f58000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED| MAP_DENYWRITE, 3, 0x28) = 0xb7f58000 close(3) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=169804, ...}) = 0 mmap2(NULL, 169804, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ea5000 close(3) = 0 open("/usr/lib/libdvdcss.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\1;J4\0\0\0\4"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=31508, ...}) = 0 mmap2(0x4a3af000, 31240, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4a3af000 mmap2(0x4a3b6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED| MAP_DENYWRITE, 3, 0x7) = 0x4a3b6000 close(3) = 0 munmap(0xb7ea5000, 169804) = 0 --- SIGSEGV (Segmentation fault) @ 0 (0) ---
Да, под gdb всё нормально.
*** Bug 15411 has been marked as a duplicate of this bug. ***
$ sudo valgrind xine-list ==9826== Memcheck, a memory error detector. ==9826== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==9826== Using LibVEX rev 1732, a library for dynamic binary translation. ==9826== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==9826== Using valgrind-3.2.3, a dynamic binary instrumentation framework. ==9826== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==9826== For more details, rerun with: -v ==9826== ==9826== Invalid read of size 1 ==9826== at 0x40061A8: strlen (mc_replace_strmem.c:246) ==9826== by 0x400AC9D: (within /usr/lib/xine/plugins/1.21/ xineplug_inp_dvd.so) ==9826== Address 0x0 is not stack'd, malloc'd or (recently) free'd ==9826== ==9826== Process terminating with default action of signal 11 (SIGSEGV) ==9826== Access not within mapped region at address 0x0 ==9826== at 0x40061A8: strlen (mc_replace_strmem.c:246) ==9826== by 0x400AC9D: (within /usr/lib/xine/plugins/1.21/ xineplug_inp_dvd.so)
Мне не удалось добиться того, что xine-list "падал от рута"... Может у вас sudo сегфолтится?
Давайте хоть параметры архитектуры, версию ядра - может удастся воспроизвести...
(In reply to comment #4) > Может у вас sudo сегфолтится? При чём тут sudo? И вы правда не посмотрели вывод valgrind? (In reply to comment #5) > Давайте хоть параметры архитектуры, версию ядра - может удастся > воспроизвести... i586, 2.6.25, libxine-1.1.12-alt1
Собранное с дебагом: ==2683== Invalid read of size 1 ==2683== at 0x40061A8: strlen (mc_replace_strmem.c:246) ==2683== by 0x400AC9D: init_class (input_dvd.c:1825) ==2683== Address 0x0 is not stack'd, malloc'd or (recently) free'd
(In reply to comment #7) > Собранное с дебагом: > > ==2683== Invalid read of size 1 > ==2683== at 0x40061A8: strlen (mc_replace_strmem.c:246) > ==2683== by 0x400AC9D: init_class (input_dvd.c:1825) > ==2683== Address 0x0 is not stack'd, malloc'd or (recently) free'd Спасибо, более-менее проясняется... Почти уверен, что это из-за отсутствия TMPDIR (только в этом случае и проявляется) Есть идеи, что подставить в качестве TMPDIR, если getenv("TMPDIR") вернул NULL? Кстати, ИМХО отсутсвие TMPDIR само по себе уже похоже на ошибку и может "велезти боком" ещё где-то :(
(In reply to comment #8) > Есть идеи, что подставить в качестве TMPDIR, если getenv("TMPDIR") вернул NULL? Вроде /tmp по SUSv3, если не ошибаюсь.
fixed in xine-1.1.12-alt2