LINUX.ORG.RU

libvdpau-va-gl

 , , ,


33

20

https://github.com/i-rinat/libvdpau-va-gl/releases

В двух словах, это VDPAU драйвер, который использует OpenGL для рисования и VA-API для декодирования видео.

VDPAU это открытый интерфейс, который подразумевает единую точку входа (libvdpau) и подключаемые драйверы; API не замкнуто накоротко на nVidia. Выбор конкретного драйвера осуществляется либо через переменную окружения VDPAU_DRIVER, либо спрашивается у X-сервера. Если так или иначе получить имя не удалось, считается, что оно есть «nvidia». Драйвер представляет собой разделяемую библиотеку с именем вида libvdpau_<drivername>.so.1. Программы линкуются с libvdpau, а она в свою очередь загружает нужный драйвер.

Чтобы использовать, нужно собрать, положить библиотеку в директорию, где её сможет найти компоновщик, и добавить в окружение переменную VDPAU_DRIVER=va_gl. Проверить, что драйвер работает, можно запустив vdpauinfo. А vainfo покажет, работает ли драйвер VA-API.

На видеокартах AMD по чудаковатым причинам происходят падения внутри XCloseDisplay. Чтобы обойти проблему, нужно в переменную VDPAU_QUIRKS добавить строку XCloseDisplay. Элементы в VDPAU_QUIRKS перечисляются через запятую, слитно, без пробелов и служат для тонкой настройки поведения драйвера. Кроме XCloseDisplay, есть ещё параметр ShowWatermark, включающий отображение строки va_gl в правом нижнем углу. Полный список можно найти в README.md.

Начиная с версии 2.99.908 xf86-video-intel сообщает переходнику libvdpau.so имя VDPAU драйвера. Символьных ссылок
libvdpau_i965.so.1libvdpau_va_gl.so.1
libvdpau_i915.so.1libvdpau_va_gl.so.1
достаточно для загрузки, и необходимости в использовании VDPAU_DRIVER больше нет.

★★★★★

Последнее исправление: i-rinat (всего исправлений: 12)
Ответ на: комментарий от Behem0th

Я хз с чем связаны изменения но падает теперь в 100% случаях при попытки выйти из фулскрина

Я добавил кэширование соединений с X сервером, теперь соединения не утекают. Попробуй, вдруг от этого и падения закончатся?

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

вот что осталось в консоли после VDPAU_LOG=1 firefox > out.txt

Ещё добавил печать GL ошибок через glDebugMessageCallback. У меня ещё не скоро получится проверить, у тебя быстрее выйдет. Ошибки будут сыпаться в stderr.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Ускорение в флеше сломалось. Нет вотермарка и по поведению не похоже на то когда ускорение работало. В мплеере продолжает работать.

VDPAU_LOG=1 firefox > stdout.log 2> stderr.log

stdout.log

stderr.log

Behem0th ★★★★★
()
Ответ на: комментарий от ckotinko

ко мне обращаться будет быстрее, чем багрепорты писать, ибо багрепорты, что я вижу на сайте amd к нам вообще не доходят.

О, затестите тогда вот это дело. Конкретно в первом случае похоже на утечку видеопамяти.

Ещё есть одна интересная проблема с воспроизведением ремуксов. Например берём 6310 и пару серий отсюда, смотрим первую, проматывая в ускоренном режиме опенинг и эндинг, приступаем смотреть вторую - получаем stuttering видео. Если не перематывать, то два-три эпизода получится посмотреть, потом всё равно будет stuttering. Workaround - перезапуск Иксов или ребут.
Я этот же артефакт видел ранее, когда при UMA Buffer Size = 256 MB пытался воспроизводить H.264 Level 5.1, тоже начинался stuttering после просмотра двух-трёх эпизодов. Запросил у Zotac обновление UEFI с возможностью менять UMA Buffer Size, прислали, выставил 512 MB, проблема H.264 Level 5.1 пропала, но потом обнаружил эту проблему с ремуксами. Я не знаю, как её репортить через стандартные каналы - ни предлагать же саппорту качать гигабайты нелегального (в США; Aniplex USA) контента, в самом деле.

RussianNeuroMancer ★★★★★
()
Ответ на: комментарий от RussianNeuroMancer

пару серий отсюда

Ня!

Раз пошла такая пьянка то: i-rinat Для тестирования твоей библиотеки с мплеером я использую несколько файлов скачанных с ютуба в разном качестве и 2 файла аниме с большим битреем. Один из них это [A_warrior_of_light]_Bakemonogatari_01_(BD_x264_1280x720_FLAC) 1.0 Гб

Второй это первая серия из упомянутого выше RussianNeuroMancer'ом. Все видео играют замечательно кроме последнего при воспроизведении оного на экране ничего кроме мусора. И иногда падает если перематывать некоторое время, зажав курсорную клавишу.

http://ompldr.org/vaTF4NQ/VDPAU.png

Если интересно вот вывод:

VDPAU_LOG=1 mplayer -vc ffh264vdpau 01\ Hitagi\ Crab\ -\ Part\ 1.mkv > stdout.log 2> stderr.log

stdout.log

stderr.log

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

И трейс падения.

(gdb) bt
#0  0xb7fdd424 in __kernel_vsyscall ()
#1  0xb6c82296 in raise () from /usr/lib/libc.so.6
#2  0xb6c83a23 in abort () from /usr/lib/libc.so.6
#3  0xb7fbba5c in ?? () from /usr/lib/dri/fglrx_drv_video.so
#4  0xb5c25296 in vaBeginPicture () from /usr/lib/libva.so.1
#5  0xb5f77635 in softVdpDecoderRender (decoder=decoder@entry=14, target=target@entry=17, picture_info=picture_info@entry=0x8b801f4 <surface_render+756>, 
    bitstream_buffer_count=bitstream_buffer_count@entry=0, bitstream_buffers=bitstream_buffers@entry=0x93223c0)
    at /home/behem0th/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build/vdpau-soft.c:475
#6  0xb5f7fc2b in lockedVdpDecoderRender (decoder=14, target=17, picture_info=0x8b801f4 <surface_render+756>, bitstream_buffer_count=0, bitstream_buffers=0x93223c0)
    at /home/behem0th/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build/vdpau-locking.c:86
#7  0x080df2dd in draw_slice (image=0xbfffe0a0, stride=0xbfffe0b0, w=1920, h=1080, x=0, y=0) at libvo/vo_vdpau.c:994
#8  0x08201e46 in draw_slice (s=0x9a0c7c0, src=0x9a0d64c, offset=0xbfffe120, y=0, type=3, height=<optimized out>) at libmpcodecs/vd_ffmpeg.c:489
#9  0x08529fbf in ff_draw_horiz_band (avctx=0x9a0c7c0, dsp=dsp@entry=0x0, cur=cur@entry=0x9a0d64c, last=0x9a3d2c4, y=y@entry=0, h=<optimized out>, h@entry=1080, 
    picture_structure=picture_structure@entry=3, first_field=first_field@entry=0, draw_edges=draw_edges@entry=0, low_delay=0, v_edge_pos=1088, h_edge_pos=1920)
    at libavcodec/mpegvideo.c:2916
#10 0x0842929b in ff_h264_draw_horiz_band (h=0x9a0cba0, y=y@entry=0, height=1080) at libavcodec/h264.c:131
#11 0x08606e95 in ff_vdpau_h264_picture_complete (h=<optimized out>, h@entry=0x9a0cba0) at libavcodec/vdpau.c:230
#12 0x08417a18 in field_end (h=h@entry=0x9a0cba0, in_setup=in_setup@entry=0) at libavcodec/h264.c:2720
#13 0x0843030f in decode_frame (avctx=0x9a0c7c0, data=0x9a0c620, got_frame=0xbfffe330, avpkt=0xbfffe26c) at libavcodec/h264.c:4755
#14 0x085d9a5f in avcodec_decode_video2 (avctx=avctx@entry=0x9a0c7c0, picture=picture@entry=0x9a0c620, got_picture_ptr=got_picture_ptr@entry=0xbfffe330, avpkt=avpkt@entry=0xbfffe34c)
    at libavcodec/utils.c:1681
#15 0x0820254e in decode (sh=0x91edd70, data=0xa8102c0, len=18871, flags=0) at libmpcodecs/vd_ffmpeg.c:831
#16 0x0812b253 in decode_video (sh_video=sh_video@entry=0x91edd70, start=0xa8102c0 "", in_size=18871, drop_frame=drop_frame@entry=0, pts=78.995999999999995, full_frame=full_frame@entry=
    0x0) at libmpcodecs/dec_video.c:398
#17 0x080b0832 in generate_video_frame (d_video=0x91cb138, sh_video=0x91edd70) at mplayer.c:1807
#18 update_video (blit_frame=blit_frame@entry=0xbfffe4ec) at mplayer.c:2495
#19 0x080a324c in main (argc=4, argv=0xbffff5a4) at mplayer.c:3768
Behem0th ★★★★★
()

Если я тебя задолбал уже - извини :-(

Я просто в отпуске и у меня много свободного времени:-)

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Ня!

И на скрине с панцушотом единственном проставлено время.

Все видео играют замечательно кроме последнего при воспроизведении оного на экране ничего кроме мусора. И иногда падает если перематывать некоторое время, зажав курсорную клавишу.

Это то самое, которое 6,5 гигов?

Кстати, предварительно могу сказать, что на это видео сам mplayer ругается. Возможно, поток там битый. В какой-то момент он передаёт в vdpau битый слайс без NAL заголовка. Похоже, мне надо это тоже как-то детектировать и обходить.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Если я тебя задолбал уже

Тесты на разных платформах позволяют найти больше багов. Ну и исправить, я надеюсь.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

И на скрине с панцушотом единственном проставлено время.

Это время в самом видео по сюжету. Оно отсчитывает длительность панцушота.

Это то самое, которое 6,5 гигов?

Да, тестирую на 1й серии.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Ускорение в флеше сломалось.

В общем, я не вовремя инициализировал текстуру под видео поверхность. Чудо, что оно вообще работало. Похоже, от этого и были искажения. Ошибка вылезала только на создании bitmap поверхности, потому что это ближайшее место, где проверяются ошибки OpenGL.

Но зато после того, как я передвинул инициализацию текстуры в то место, где она должна быть, вылезла очень странная ошибка. Стало глючить где-то внутри libva-glx, какие-то неполадки с gl-контекстом. И тут я встрял.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

А я сегодня обновил каталист до беты 13.3. И поймал новый глюк. Если вовремя работы мплеера в фулскрин появляется стандартное кдешное уведомление то есть шанс что его «заест» и картинка заморозится и начнет мигать. Это происходит даже в без ускорения со стандартным выводом xv.

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

Ну да, на увд1 они забили. Хоть они и сказали что возможно добавят поддержку увд1, но я что то сомневаюсь.

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

Но зато после того, как я передвинул инициализацию текстуры в то место, где она должна быть, вылезла очень странная ошибка. Стало глючить где-то внутри libva-glx, какие-то неполадки с gl-контекстом. И тут я встрял.

добавил пул контекстов для рисования, по одному на поток, починились падения внутри libva-glx. Отображение на экран всё так же использует один и тот же контекст, пока не ясно, нужно ли заводить пул для него тоже.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Проверил, последние изменения.

Вчерашние, или те, которые 37 минут назад?

падения иксов присутствуют.

Пока что не смог воспроизвести.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

которые 37 минут назад

Собрал, проверил, тут же отписал.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

падения иксов присутствуют.

Может получится как-то получить stack trace упавших иксов? Могу предложить такой вариант: поставить и включить apport, он будет складывать дампы в /var/crash/. После падения распаковываешь дамп с помощью apport-unpack (из всего получившегося нужен core-файл), потом запускаешь gdb /usr/bin/Xorg /path/to/core, и уже в нём bt.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Запускал konqueror в отдельных иксах. Нужно сказать что для того чтобы сейчас уронить иксы нужно постараться. Если до изменений хватало 1-2х разворачиваний в полный экран то сейчас выпадает раз в 20 сворачиваний.

Результат:

(EE) Backtrace:
(EE) 0: /usr/bin/X (xorg_backtrace+0x49) [0x81e47e9]
(EE) 1: /usr/bin/X (0x8048000+0x1a06d6) [0x81e86d6]
(EE) 2: linux-gate.so.1 (__kernel_rt_sigreturn+0x0) [0xb772a40c]
(EE) 3: /usr/lib/libpixman-1.so.0 (pixman_region_intersect+0x9f) [0xb75e4a2f]
(EE) 4: /usr/bin/X (SetWinSize+0xad) [0x80a7f5d]
(EE) 5: /usr/bin/X (ResizeChildrenWinSize+0x1c3) [0x80a8473]
(EE) 6: /usr/bin/X (SetRootClip+0x163) [0x80ad523]
(EE) 7: /usr/bin/X (xf86EnableDisableFBAccess+0x78) [0x80c8418]
(EE) 8: /usr/bin/X (0x8048000+0xbd447) [0x8105447]
(EE) 9: /usr/lib/xorg/modules/drivers/fglrx_drv.so (xdl_xs113_xclEnableDisableFBAccess+0x47) [0xb69bdf27]
(EE) 10: /usr/lib/xorg/modules/drivers/fglrx_drv.so (xclEnableDisableFBAccess+0x29) [0xb6823bb9]
(EE) 11: /usr/lib/xorg/modules/drivers/fglrx_drv.so (tfvUpdateDisplay+0x79) [0xb69de2d9]
(EE) 12: /usr/lib/xorg/modules/drivers/fglrx_drv.so (xdl_xs113_atiddxTFVLeaveExclusiveMode+0xa3) [0xb69af293]
(EE) 13: /usr/lib/xorg/modules/drivers/fglrx_drv.so (xdl_xs113_FGLRXClientGone+0x5b) [0xb699fe4b]
(EE) 14: /usr/lib/xorg/modules/drivers/fglrx_drv.so (xdl_xs113_atiddxDestroyWindow+0x130) [0xb69985f0]
(EE) 15: /usr/bin/X (0x8048000+0x11ba05) [0x8163a05]
(EE) 
(EE) Segmentation fault at address 0x14

Полный вывод в консоль.

http://paste.kde.org/727106/

На всякий случай лог иксов

http://paste.kde.org/727112/

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Результат:

По этому трейсу мало что видно. Падают они скорее всего от неверного параметра (Segmentation fault at address 0x14) — вместо адреса функции где-то передали число, либо та область памяти была переписана случайно. Но не ясно, в какой момент всё пошло не так. Я долго отлавливал аналогичную ошибку у себя — оказалось, что использовалась уже освобождённая память. При этом баг выглядел очень странным и вылезал в совершенно другом месте. Тут похожая ситуация.

Какой-нибудь из тестов рушит или подвешивает иксы? Тесты запускаются по

make check

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Иксы не упали.

behem0th@ArchLinux ~ $ cd AUR/mm/libvdpau-va-gl-git/
PKGBUILD                                       pkg/
libvdpau-va-gl-20121029-1-i686.pkg.tar.xz      src/
libvdpau-va-gl-git-20121029-1-i686.pkg.tar.xz  
behem0th@ArchLinux ~ $ cd AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build/
behem0th@ArchLinux ~/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build $ ls
CMakeCache.txt  CTestTestfile.cmake  ctx-stack.c   handle-storage.c      reverse-constant.c  vdpau-soft.c   xinitthreads.c
CMakeFiles      Makefile             ctx-stack.h   handle-storage.h      reverse-constant.h  vdpau-soft.h
CMakeLists.txt  README.md            globals.c     install_manifest.txt  tests               vdpau-trace.c
COPYING         bitstream.c          globals.h     libvdpau_va_gl.so     vdpau-entry.c       vdpau-trace.h
COPYING.GPLv3   bitstream.h          h264-parse.c  libvdpau_va_gl.so.1   vdpau-locking.c     watermark.c
COPYING.LGPLv3  cmake_install.cmake  h264-parse.h  libxinitthreads.so    vdpau-locking.h     watermark.h
behem0th@ArchLinux ~/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build $ make check
Scanning dependencies of target test-000
[  4%] Building C object tests/CMakeFiles/test-000.dir/test-000.c.o
[  9%] Building C object tests/CMakeFiles/test-000.dir/__/bitstream.c.o
Linking C executable test-000
[  9%] Built target test-000
Scanning dependencies of target test-007
[ 13%] Building C object tests/CMakeFiles/test-007.dir/test-007.c.o
[ 18%] Building C object tests/CMakeFiles/test-007.dir/vdpau-init.c.o
Linking C executable test-007
[ 18%] Built target test-007
Scanning dependencies of target test-004
[ 22%] Building C object tests/CMakeFiles/test-004.dir/test-004.c.o
[ 27%] Building C object tests/CMakeFiles/test-004.dir/vdpau-init.c.o
Linking C executable test-004
[ 27%] Built target test-004
Scanning dependencies of target test-001
[ 31%] Building C object tests/CMakeFiles/test-001.dir/test-001.c.o
[ 36%] Building C object tests/CMakeFiles/test-001.dir/vdpau-init.c.o
Linking C executable test-001
[ 36%] Built target test-001
Scanning dependencies of target test-002
[ 40%] Building C object tests/CMakeFiles/test-002.dir/test-002.c.o
[ 45%] Building C object tests/CMakeFiles/test-002.dir/vdpau-init.c.o
Linking C executable test-002
[ 45%] Built target test-002
Scanning dependencies of target test-006
[ 50%] Building C object tests/CMakeFiles/test-006.dir/test-006.c.o
[ 54%] Building C object tests/CMakeFiles/test-006.dir/vdpau-init.c.o                                                                     
Linking C executable test-006                                                                                                             
[ 54%] Built target test-006                                                                                                              
Scanning dependencies of target test-008                                                                                                  
[ 59%] Building C object tests/CMakeFiles/test-008.dir/test-008.c.o                                                                       
[ 63%] Building C object tests/CMakeFiles/test-008.dir/vdpau-init.c.o                                                                     
Linking C executable test-008                                                                                                             
[ 63%] Built target test-008                                                                                                              
Scanning dependencies of target test-009                                                                                                  
[ 68%] Building C object tests/CMakeFiles/test-009.dir/test-009.c.o                                                                       
[ 72%] Building C object tests/CMakeFiles/test-009.dir/vdpau-init.c.o                                                                     
Linking C executable test-009
[ 72%] Built target test-009
Scanning dependencies of target test-010
[ 77%] Building C object tests/CMakeFiles/test-010.dir/test-010.c.o
[ 81%] Building C object tests/CMakeFiles/test-010.dir/vdpau-init.c.o                                                                     
Linking C executable test-010
[ 81%] Built target test-010
Scanning dependencies of target test-003
[ 86%] Building C object tests/CMakeFiles/test-003.dir/test-003.c.o
[ 90%] Building C object tests/CMakeFiles/test-003.dir/vdpau-init.c.o
Linking C executable test-003
[ 90%] Built target test-003
Scanning dependencies of target test-005
[ 95%] Building C object tests/CMakeFiles/test-005.dir/test-005.c.o
[100%] Building C object tests/CMakeFiles/test-005.dir/vdpau-init.c.o
Linking C executable test-005
[100%] Built target test-005
Scanning dependencies of target check
Test project /home/behem0th/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build
      Start  1: test-000
 1/11 Test  #1: test-000 .........................   Passed    0.00 sec
      Start  2: test-001
 2/11 Test  #2: test-001 .........................   Passed    0.49 sec
      Start  3: test-002
 3/11 Test  #3: test-002 .........................   Passed    0.32 sec
      Start  4: test-003
 4/11 Test  #4: test-003 .........................   Passed    0.51 sec
      Start  5: test-004
 5/11 Test  #5: test-004 .........................***Failed    0.48 sec
      Start  6: test-005
 6/11 Test  #6: test-005 .........................   Passed    0.48 sec
      Start  7: test-006
 7/11 Test  #7: test-006 .........................   Passed    6.11 sec
      Start  8: test-007
 8/11 Test  #8: test-007 .........................   Passed    0.29 sec
      Start  9: test-008
 9/11 Test  #9: test-008 .........................   Passed    1.31 sec
      Start 10: test-009
10/11 Test #10: test-009 .........................***Exception: Other 32.12 sec
      Start 11: test-010
11/11 Test #11: test-010 .........................   Passed    0.43 sec

82% tests passed, 2 tests failed out of 11

Total Test time (real) =  42.57 sec

The following tests FAILED:
          5 - test-004 (Failed)
         10 - test-009 (OTHER_FAULT)
Errors while running CTest
make[3]: *** [CMakeFiles/check] Ошибка 8
make[2]: *** [CMakeFiles/check.dir/all] Ошибка 2
make[1]: *** [CMakeFiles/check.dir/rule] Ошибка 2
make: *** [check] Ошибка 2
behem0th@ArchLinux ~/AUR/mm/libvdpau-va-gl-git/src/libvdpau-va-gl-build :( $ 

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Что я со своей стороны могу сделать для прояснения ситуации?

Если падают — нужно получить core-файл. Я чуть выше писал, это можно сделать через apport, он собирает вообще все core-файлы.

Я сейчас сижу гадаю, как же иксы отлаживать. Они у меня подвисают, когда я к ним gdb цепляюсь. У меня сейчас наблюдается deadlock на test-006 (там тест в 50 потоков) и я никак не могу понять, где именно виснет.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

5/11 Test #5: test-004 .........................***Failed 0.48 sec

В файл Testing/Temporary/LastTest.log пишется вывод всех тестов. Мне бы его посмотреть. И если у тебя release-сборка библиотеки, сделай, пожалуйста, debug-сборку.

Файл большой, наверное его лучше чем-нибудь сжать.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

debug-сборку

На ней и сижу. Или лучше тестировать с release-сборкой?

Файл большой

270кб всего.

http://ompldr.org/vaTR4cA/LastTest.log

Я не совсем понимаю, может мне нужно было делать тесты с VDPAU_LOG=1 если у меня глобально в переменных 0 стоит?

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

сделать через apport

Да с ним проблемы( В арче его нет. А как его поставить я не понимаю. Там нужен сервис, в пакете есть для апстарта а в арче системд.

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

Я чуть выше писал, это можно сделать через apport, он собирает вообще все core-файлы

Попробую почитать и в ручную сделать core dump.

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Обломилось два теста. Первый (test-004) это тест на размывание картинки (шрифты замыливались), так что это не страшно. Возможно просто отличие цвета на 1/255.

Второй, test-009, проверяет, что при создании/удалении vdp устройства ничего не утекает. Я недавно в этом коде баг чинил и, похоже, чего-то не учёл: теперь код течёт на amd. Воспроизводится у меня стабильно, буду чинить.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Попробую почитать и в ручную сделать core dump.

Если запускаешь иксы вручную, можно в терминале дать команду

ulimit -c unlimited
и при падении в текущей директории образуется файл core. Останется загрузить его
gdb /usr/bin/Xorg core
И дальше там уже bt.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Не могу осилить(

behem0th@ArchLinux ~/12 $ cat a.c 
int main()
{
int * p = 0;
*p = 1;
} 
behem0th@ArchLinux ~/12 $ gcc a.c 
behem0th@ArchLinux ~/12 $ ./a.out 
Ошибка сегментирования (core dumped)

В папке никакого файла core нее появляется. Нашел утилиту от системд systemd-coredumpctl. Запустив ее под рутом виден дамп.

ArchLinux /home/behem0th $ systemd-coredumpctl  
TIME                                         PID   UID   GID SIG EXE
             Чт 2013-04-18 18:02:41 MSK  10044  1000  1000  11 /home/behem0th/a.out
             Чт 2013-04-18 18:09:21 MSK  10643  1000  1000  11 /home/behem0th/a.out
             Чт 2013-04-18 20:00:33 MSK  21341  1000  1000  11 /home/behem0th/12/a.out
ArchLinux /home/behem0th $ systemd-coredumpctl gdb
TIME                                         PID   UID   GID SIG EXE
             Чт 2013-04-18 20:00:33 MSK  21341  1000  1000  11 /home/behem0th/12/a.out
GNU gdb (GDB) 7.5.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/behem0th/12/a.out...(no debugging symbols found)...done.
[New LWP 21341]

warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
Core was generated by `./a.out'.
Program terminated with signal 11, Segmentation fault.
#0  0x080483e0 in main ()
(gdb) bt
#0  0x080483e0 in main ()
(gdb) quit
ArchLinux /home/behem0th $ 
Но с иксами такого не получается провернуть
behem0th@ArchLinux ~ $ cat konq.sh 
/usr/bin/konqueror
behem0th@ArchLinux ~ $ startx ~/konq.sh -- :1
После падения иксов в выводе systemd-coredumpctl новых дампов не появляется. Нагуглить информацию по использованию пока не получается(

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Нагуглить информацию по использованию пока не получается(

Так может сработать:

# echo core.%p > /proc/sys/kernel/core_pattern

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Дало только то что в первом варианте перестала добавляться строка в systemd-coredumpctl.

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

теперь код течёт на amd. Воспроизводится у меня стабильно, буду чинить.

Оказывается, xvba-va-driver тоже открывает своё соединение к X серверу. А закрыть автор забыл. Вот и течёт.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Оказывается, xvba-va-driver тоже открывает своё соединение к X серверу. А закрыть автор забыл.

Я подумал над тем, стоит ли делать workaround, и пришёл к выводу, что проще патчить xvba-va-driver. В конце-концов, утечка в нём, и для него есть исходники.

diff -ur xvba-video-0.8.0/src/xvba_driver.c xvba-video-0.8.0-n/src/xvba_driver.c
--- xvba-video-0.8.0/src/xvba_driver.c	2011-06-14 15:07:13.000000000 +0400
+++ xvba-video-0.8.0-n/src/xvba_driver.c	2013-04-19 15:28:00.000000000 +0400
@@ -125,6 +125,8 @@
     }
 
     xvba_gate_exit();
+    if (driver_data->x11_dpy_local)
+        XCloseDisplay(driver_data->x11_dpy_local);
 }
 
 // vaInitialize
i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

Я в список рассылки (и автору) послал письмо. Сейчас выходные, так что ответ скорее всего придёт в начале следующей недели. Тогда судьба патча и прояснится.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от Behem0th

В общей сложности что должно поменяться?

Честно говоря, не знаю. Просто это была проблема, на которую сработал тест. Это связано с X сервером, но не понятно, связано это с его падениями или нет. Каждый раз при смене ролика утекает одно соединение. После примерно 200 смен должен упасть флешплеер.

А, «Хитаги Краб» я проверил, у меня тоже рассыпается, но с mplayer-vaapi всё в порядке. Значит, я где-то ошибся в параметрах. Поиск этой ошибки скорее всего затянется.

i-rinat ★★★★★
() автор топика
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Собрал с патчем на xvba-va-driver и новую гит версию ibvdpau-va-gl и

http://ompldr.org/vaTVocw/j30073_1258158701.jpg

В отдельном икссервере что лиса что конк не хотят падать. Разворачивал раз 50 п им пофиг. В первом иксервере падает с первой попытки в 100% случаев. Как вариант kwin говно? В отдельных иксах запускаю без квина(не знаю как запустить с ним). Пробовал меня отрисовку квина с ОпенГЛ на Хрендер, все равно падает.

Behem0th ★★★★★
()
Ответ на: комментарий от i-rinat

Поиск этой ошибки скорее всего затянется

Это пока единственное видео которое у меня не пошло, так что не к спеху.

Behem0th ★★★★★
()
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от Behem0th

В первом иксервере падает с первой попытки в 100% случаев.

Оказалось, что если зайти по ssh, то можно подрубиться к иксам gdb'ом (на том же компе всё зависает), с помощью

gdb --pid=`pidof Xorg`
После подключения вводишь «continue» и выполнение продолжается. Когда упадут, управление переходит к gdb. А там дальше bt и будет backtrace.

Как вариант kwin говно?

Просто «удачное» стечение обстоятельств. Кстати, с kwin'ом я не пробовал, может и у меня удастся воспроизвести.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Даже жалко тебя-попутно фиксиш тонну костылей...а все из-за кривых дров АМД...

Не закрытый контекст/невыгруженные шейдеры/подбное-не никак не может привести к падению иксов на нвидии(с проприетарщиной)...этож просто цирк...

исходя даже из этого треда я могу запилить webgl «недоиницилизацию» и кривой шейдер для радеонов-и будут валиться иксы от посещения сайта?Как вы это терпите вообще.

Выкинуть этот костыль и юзать нвидию не вариант?Ведь раз ты осилил запилить такое-зачем кушать то кактус...

e1641559
()
Ответ на: комментарий от e1641559

вот у меня нет ни амд, ни нвидии, но с этим как ты выразился «костылем» наконец-то перестал тормозить флеш в фаерфоксе при прокрутке. разве этого мало?

BMX ★★☆
()
Ответ на: комментарий от i-rinat
Program received signal SIGSEGV, Segmentation fault.
0xb75cea2f in pixman_region_intersect () from /usr/lib/libpixman-1.so.0
(gdb) bt
#0  0xb75cea2f in pixman_region_intersect () from /usr/lib/libpixman-1.so.0
#1  0x080a7f5d in SetWinSize ()
#2  0x080a8473 in ResizeChildrenWinSize ()
#3  0x080ad523 in SetRootClip ()
#4  0x080c8418 in xf86EnableDisableFBAccess ()
#5  0x08105447 in ?? ()
#6  0xb69a7f27 in xdl_xs113_xclEnableDisableFBAccess () from /usr/lib/xorg/modules/drivers/fglrx_drv.so
#7  0xb680dbb9 in xclEnableDisableFBAccess () from /usr/lib/xorg/modules/drivers/fglrx_drv.so
#8  0xb69c82d9 in tfvUpdateDisplay () from /usr/lib/xorg/modules/drivers/fglrx_drv.so
#9  0xb6999293 in xdl_xs113_atiddxTFVLeaveExclusiveMode () from /usr/lib/xorg/modules/drivers/fglrx_drv.so
#10 0xb6989e4b in xdl_xs113_FGLRXClientGone () from /usr/lib/xorg/modules/drivers/fglrx_drv.so
#11 0xb69825f0 in xdl_xs113_atiddxDestroyWindow () from /usr/lib/xorg/modules/drivers/fglrx_drv.so
#12 0x08163a05 in ?? ()
#13 0x0811128f in ?? ()
#14 0x0813aeb0 in ?? ()
#15 0x080a72eb in ?? ()
#16 0x080aa0af in DeleteWindow ()
#17 0x0809f17e in ?? ()
#18 0x0809fd14 in FreeResource ()
#19 0x08073bdc in ?? ()
#20 0x0807a135 in ?? ()
#21 0x080676ba in ?? ()
#22 0xb73a37c3 in __libc_start_main () from /usr/lib/libc.so.6
#23 0x08067a89 in _start ()

На всякий случай полный выхлоп.

http://paste.kde.org/728690/

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th

Бог отладки сегодня ко мне благоволит.

ArchLinux /home/behem0th $ systemd-coredumpctl 
TIME                                         PID   UID   GID SIG EXE
             Чт 2013-04-18 18:02:41 MSK  10044  1000  1000  11 /home/behem0th/a.out
             Чт 2013-04-18 18:09:21 MSK  10643  1000  1000  11 /home/behem0th/a.out
             Чт 2013-04-18 20:00:33 MSK  21341  1000  1000  11 /home/behem0th/12/a.out
             Чт 2013-04-18 21:34:31 MSK  29812  1000  1000  11 /home/behem0th/12/a.out
             Чт 2013-04-18 21:47:56 MSK   2196  1000  1000  11 /home/behem0th/12/a.out
             Сб 2013-04-20 09:55:44 MSK   1543     0     0   6 /usr/bin/Xorg
ArchLinux /home/behem0th :( $ systemd-coredumpctl gdb 1543
TIME                                         PID   UID   GID SIG EXE
             Сб 2013-04-20 09:55:44 MSK   1543     0     0   6 /usr/bin/Xorg
GNU gdb (GDB) 7.5.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/Xorg...(no debugging symbols found)...done.
BFD: Warning: /var/tmp/coredump-sNsoun is truncated: expected core file size >= 80936960, found: 3899392.

warning: core file may not match specified executable file.
[New LWP 1543]
Cannot access memory at address 0xb77778e8
Cannot access memory at address 0xb77778e4
(gdb) bt
#0  0xb7755424 in ?? ()
Cannot access memory at address 0xbf808534
(gdb) quit
ArchLinux /home/behem0th $ 

Как вариант я сначала сохранил корку

ArchLinux /home/behem0th $ systemd-coredumpctl dump 1543 -o /home/behem0th/core
TIME                                         PID   UID   GID SIG EXE
             Сб 2013-04-20 09:55:44 MSK   1543     0     0   6 /usr/bin/Xorg
More than one entry matches, ignoring rest.

А потом как ты говорил

ArchLinux /home/behem0th $ gdb /usr/bin/Xorg core
GNU gdb (GDB) 7.5.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/Xorg...(no debugging symbols found)...done.
BFD: Warning: /home/behem0th/core is truncated: expected core file size >= 80936960, found: 3899392.

warning: core file may not match specified executable file.
[New LWP 1543]
Cannot access memory at address 0xb77778e8
Cannot access memory at address 0xb77778e4
(gdb) bt
#0  0xb7755424 in ?? ()
Cannot access memory at address 0xbf808534
(gdb) quit

http://ompldr.org/vaTVtcg/core.zip

Behem0th ★★★★★
()
Ответ на: комментарий от Behem0th
ArchLinux /home/behem0th $ systemd-coredumpctl 
TIME                                         PID   UID   GID SIG EXE
             Чт 2013-04-18 18:02:41 MSK  10044  1000  1000  11 /home/behem0th/a.out
             Чт 2013-04-18 18:09:21 MSK  10643  1000  1000  11 /home/behem0th/a.out
             Чт 2013-04-18 20:00:33 MSK  21341  1000  1000  11 /home/behem0th/12/a.out
             Чт 2013-04-18 21:34:31 MSK  29812  1000  1000  11 /home/behem0th/12/a.out
             Чт 2013-04-18 21:47:56 MSK   2196  1000  1000  11 /home/behem0th/12/a.out
             Сб 2013-04-20 09:55:44 MSK   1543     0     0   6 /usr/bin/Xorg

Самое смешное что я так и не понял почему сохранилась именно эта корка. Ронял иксы я 2 раза а сохранилась только 1на корка.

Behem0th ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.