Summary: | Не запускается | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Evgenii Terechkov <evg> | ||||||||
Component: | ddccontrol | Assignee: | viy <viy> | ||||||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||||
Severity: | major | ||||||||||
Priority: | P3 | CC: | aen, viy | ||||||||
Version: | unstable | ||||||||||
Hardware: | x86 | ||||||||||
OS: | Linux | ||||||||||
Attachments: |
|
Description
Evgenii Terechkov
2011-08-27 20:14:51 MSK
я на своем мониторе не воспроизвел, значит, это только у вас можно воспризвести. поставьте, пожалуйста, debuginfo пакеты, чтобы отследить, в какой функции возникает ошибка. и от рута запускать gddccontrol совсем не обязательно, это нежелательный временный хак. достаточно, например, sudo chmod 666 /dev/i2c-* и можно пускать gddccontrol под gdb от простого пользователя. по идее, консольный ddccontrol тоже должно выбивать, а его отлаживать легче. попробуйте ddccontrol -p выбивает ли? выбивает не всегда и не везде, поэтому не critical Падают и графическая версия, и консольная, если каким-либо образом доступны устройства /dev/i2c-* (запуск из под рута или из-за прав доступа): evg@evg ~ $ddccontrol -p ddccontrol версии 0.4.2 Авторские права 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su) Авторские права 2004-2006 Nicolas Boichat (nicolas@boichat.ch) Эта программа распространяется БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. Вы можете распространять ее копии на условиях GNU General Public License. Поиск доступных мониторов....*** stack smashing detected ***: ddccontrol terminated ======= Backtrace: ========= /lib/libc.so.6(__fortify_fail+0x40)[0xb7835220] /lib/libc.so.6(+0xe41da)[0xb78351da] /usr/lib/libddccontrol.so.0(+0x99d4)[0xb78be9d4] /usr/lib/libddccontrol.so.0(+0x35b3)[0xb78b85b3] /usr/lib/libddccontrol.so.0(ddcci_caps+0x21b)[0xb78b87db] /usr/lib/libddccontrol.so.0(+0x3e01)[0xb78b8e01] /usr/lib/libddccontrol.so.0(ddcci_probe_device+0x5d)[0xb78b931d] /usr/lib/libddccontrol.so.0(ddcci_probe+0x330)[0xb78b9800] ddccontrol[0x8049d0c] /lib/libc.so.6(__libc_start_main+0xe6)[0xb7767c96] ddccontrol[0x8048be1] ======= Memory map: ======== 08048000-0804b000 r-xp 00000000 08:11 397115 /usr/bin/ddccontrol 0804b000-0804c000 r--p 00003000 08:11 397115 /usr/bin/ddccontrol 0804c000-0804d000 rw-p 00004000 08:11 397115 /usr/bin/ddccontrol 0804d000-0808f000 rw-p 00000000 00:00 0 [heap] b7445000-b7460000 r-xp 00000000 08:11 884920 /lib/libgcc_s.so.1 b7460000-b7461000 r--p 0001a000 08:11 884920 /lib/libgcc_s.so.1 b7461000-b7462000 rw-p 0001b000 08:11 884920 /lib/libgcc_s.so.1 b7475000-b7476000 rw-p 00000000 00:00 0 b7476000-b747e000 r--p 00000000 08:11 565828 /usr/share/locale/ru/LC_MESSAGES/ddccontrol.mo b747e000-b74bd000 r--p 00000000 08:11 436994 /usr/lib/locale/ru_RU.utf8/LC_CTYPE b74bd000-b75da000 r--p 00000000 08:11 435064 /usr/lib/locale/ru_RU.utf8/LC_COLLATE b75da000-b75db000 rw-p 00000000 00:00 0 b75db000-b7603000 r-xp 00000000 08:11 884953 /lib/libm-2.11.3.so b7603000-b7604000 r--p 00027000 08:11 884953 /lib/libm-2.11.3.so b7604000-b7605000 rw-p 00028000 08:11 884953 /lib/libm-2.11.3.so b7605000-b761a000 r-xp 00000000 08:11 884827 /lib/libz.so.1.2.5 b761a000-b761b000 r--p 00014000 08:11 884827 /lib/libz.so.1.2.5 b761b000-b761c000 rw-p 00015000 08:11 884827 /lib/libz.so.1.2.5 b761c000-b761d000 rw-p 00000000 00:00 0 b761d000-b7620000 r-xp 00000000 08:11 884952 /lib/libdl-2.11.3.so b7620000-b7621000 r--p 00002000 08:11 884952 /lib/libdl-2.11.3.so b7621000-b7622000 rw-p 00003000 08:11 884952 /lib/libdl-2.11.3.so b7622000-b774b000 r-xp 00000000 08:11 396722 /usr/lib/libxml2.so.2.7.8 b774b000-b774f000 r--p 00128000 08:11 396722 /usr/lib/libxml2.so.2.7.8 b774f000-b7750000 rw-p 0012c000 08:11 396722 /usr/lib/libxml2.so.2.7.8 b7750000-b7751000 rw-p 00000000 00:00 0 b7751000-b78ae000 r-xp 00000000 08:11 884888 /lib/libc-2.11.3.so b78ae000-b78af000 ---p 0015d000 08:11 884888 /lib/libc-2.11.3.so b78af000-b78b1000 r--p 0015d000 08:11 884888 /lib/libc-2.11.3.so b78b1000-b78b2000 rw-p 0015f000 08:11 884888 /lib/libc-2.11.3.so b78b2000-b78b5000 rw-p 00000000 00:00 0 b78b5000-b78c0000 r-xp 00000000 08:11 395399 /usr/lib/libddccontrol.so.0.0.0 b78c0000-b78c1000 r--p 0000b000 08:11 395399 /usr/lib/libddccontrol.so.0.0.0 b78c1000-b78c2000 rw-p 0000c000 08:11 395399 /usr/lib/libddccontrol.so.0.0.0 b78c4000-b78c5000 r--p 00000000 08:11 435262 /usr/lib/locale/ru_RU.utf8/LC_NUMERIC b78c5000-b78c6000 r--p 00000000 08:11 436495 /usr/lib/locale/ru_RU.utf8/LC_TIME b78c6000-b78c7000 r--p 00000000 08:11 436494 /usr/lib/locale/ru_RU.utf8/LC_MONETARY b78c7000-b78c8000 r--p 00000000 08:11 442819 /usr/lib/locale/ru_RU.utf8/LC_MESSAGES/SYS_LC_MESSAGES b78c8000-b78c9000 r--p 00000000 08:11 434857 /usr/lib/locale/ru_RU.utf8/LC_PAPER b78c9000-b78ca000 r--p 00000000 08:11 435198 /usr/lib/locale/ru_RU.utf8/LC_NAME b78ca000-b78cb000 r--p 00000000 08:11 436982 /usr/lib/locale/ru_RU.utf8/LC_ADDRESS b78cb000-b78cc000 r--p 00000000 08:11 436520 /usr/lib/locale/ru_RU.utf8/LC_TELEPHONE b78cc000-b78cd000 r--p 00000000 08:11 434846 /usr/lib/locale/ru_RU.utf8/LC_MEASUREMENT b78cd000-b78d4000 r--s 00000000 08:11 419371 /usr/lib/gconv/gconv-modules.cache b78d4000-b78d5000 r--p 00000000 08:11 436493 /usr/lib/locale/ru_RU.utf8/LC_IDENTIFICATION b78d5000-b78d6000 rw-p 00000000 00:00 0 b78d6000-b78f4000 r-xp 00000000 08:11 884817 /lib/ld-2.11.3.so b78f4000-b78f5000 r-xp 00000000 00:00 0 [vdso] b78f5000-b78f6000 r--p 0001e000 08:11 884817 /lib/ld-2.11.3.so b78f6000-b78f7000 rw-p 0001f000 08:11 884817 /lib/ld-2.11.3.so bfd46000-bfd67000 rw-p 00000000 00:00 0 [stack] [1] 32563 abort (core dumped) ddccontrol -p evg@evg ~ $gdb ddccontrol core GNU gdb (GDB) 7.2-alt2 (ALT Linux) Copyright (C) 2010 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 "i586-alt-linux". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /usr/bin/ddccontrol...(no debugging symbols found)...done. [New Thread 32563] Reading symbols from /usr/lib/libddccontrol.so.0...Reading symbols from /usr/lib/debug/usr/lib/libddccontrol.so.0.0.0.debug...done. done. Loaded symbols for /usr/lib/libddccontrol.so.0 Reading symbols from /lib/libc.so.6...Reading symbols from /usr/lib/debug/lib/libc-2.11.3.so.debug...done. done. Loaded symbols for /lib/libc.so.6 Reading symbols from /usr/lib/libxml2.so.2...Reading symbols from /usr/lib/debug/usr/lib/libxml2.so.2.7.8.debug...done. done. Loaded symbols for /usr/lib/libxml2.so.2 Reading symbols from /lib/ld-linux.so.2...Reading symbols from /usr/lib/debug/lib/ld-2.11.3.so.debug...done. done. Loaded symbols for /lib/ld-linux.so.2 Reading symbols from /lib/libdl.so.2...Reading symbols from /usr/lib/debug/lib/libdl-2.11.3.so.debug...done. done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /lib/libz.so.1...Reading symbols from /usr/lib/debug/lib/libz.so.1.2.5.debug...done. done. Loaded symbols for /lib/libz.so.1 Reading symbols from /lib/libm.so.6...Reading symbols from /usr/lib/debug/lib/libm-2.11.3.so.debug...done. done. Loaded symbols for /lib/libm.so.6 Reading symbols from /lib/libgcc_s.so.1...Reading symbols from /usr/lib/debug/lib/libgcc_s.so.1.debug...done. done. Loaded symbols for /lib/libgcc_s.so.1 Core was generated by `ddccontrol -p'. Program terminated with signal 6, Aborted. #0 0xb777bb17 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig); (gdb) bt #0 0xb777bb17 in raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0xb777d2ae in abort () at abort.c:92 #2 0xb77b6c97 in __libc_message (do_abort=2, fmt=0xb7875755 "*** %s ***: %s terminated\n") at ../sysdeps/unix/sysv/linux/libc_fatal.c:186 #3 0xb7835220 in __fortify_fail (msg=0xb787573d "stack smashing detected") at fortify_fail.c:32 #4 0xb78351da in __stack_chk_fail () at stack_chk_fail.c:29 #5 0xb78be9d4 in __stack_chk_fail_local () at stack_chk_fail_local.c:29 #6 0xb78b85b3 in ddcci_parse_caps ( caps_str=0x8050000 "(prot(monitor)type(lcd)model(L196WTQ)cmds(0102030CE3F3)vcp(0203040506080B0C0E101214(01050607080B)16181A1E20303E5260(0103)6C6E7087ACAEB6C0C6C8C9D6(0104)DFF1F2(000102)F3(00010203)FC(00010203)FD(0001)FE("..., caps=0xbfd63eb4, add=1) at ddcci.c:720 #7 0xb78b87db in ddcci_caps (mon=0xbfd63e94) at ddcci.c:814 #8 0xb78b8e01 in ddcci_open_with_addr (mon=0xbfd63e94, filename=<value optimized out>, probing=1, edid=80, addr=55) at ddcci.c:943 #9 0xb78b931d in ddcci_probe_device (filename=0x8077a98 "dev:/dev/i2c-3", current=0xbfd64344, last=0xbfd64340) at ddcci.c:1046 #10 0xb78b9800 in ddcci_probe () at ddcci.c:1160 #11 0x08049d0c in ?? () #12 0xb7767c96 in __libc_start_main (main=0x8048fc0, argc=2, ubp_av=0xbfd65234, init=0x804a220, fini=0x804a280, rtld_fini=0xb78e47a0 <_dl_fini>, stack_end=0xbfd6522c) at libc-start.c:226 #13 0x08048be1 in ?? () (gdb) выцарапайте, пожалуйста, полное значение caps_str это та, которая (prot(monitor)type(lcd)model(L196WTQ)cmds(0102030CE3F3)vcp(0203040506080B0C0E101214(01050... а также сообщите пожалуйста название вашего монитора. (gdb) print caps_str Дамп сбрасывается, только когда запуск идёт не из под рута и есть доступ к /dev/i2c-*. Видимо, так и должно быть. (gdb) print caps_str No symbol "caps_str" in current context. Модель там тоже упомянута: LG Flatron L196WTQ (это второй монитор. На первом мониторе, Samsung SyncMaster 172N, валится с такой же руганью). сначала frame 6 чтобы попасть на ddcci_parse_caps если я правильно помню (gdb) frame 6 #6 0xb782a5b3 in ddcci_parse_caps ( caps_str=0x8050000 "(prot(monitor)type(lcd)model(L196WTQ)cmds(0102030CE3F3)vcp(0203040506080B0C0E101214(01050607080B)16181A1E20303E5260(0103)6C6E7087ACAEB6C0C6C8C9D6(0104)DFF1F2(000102)F3(00010203)FC(00010203)FD(0001)FE("..., caps=0xbfb163e4, add=1) at ddcci.c:720 720 } (gdb) print caps_str $1 = 0x8050000 "(prot(monitor)type(lcd)model(L196WTQ)cmds(0102030CE3F3)vcp(0203040506080B0C0E101214(01050607080B)16181A1E20303E5260(0103)6C6E7087ACAEB6C0C6C8C9D6(0104)DFF1F2(000102)F3(00010203)FC(00010203)FD(0001)FE("... (gdb) обрезало конец строки :( ничего, приложите, пожалуйста, core file, я завтра сам вытащу строку. Created attachment 5069 [details]
Core dump
Created attachment 5070 [details]
test case
Created attachment 5071 [details]
capacity string
в общем, проблема локализована, ф-я ddcci_parse_caps некорректно парсит то, что выдает ваш монитор. Проблема, что апстрим скорее мертв, чем жив, поэтому смотреть, где у них ошибка, придется нам. Я посмотрю на досуге, а если хотите ускорить, то я приложил коротенькую test_ddcci.c, которая воспроизводит ошибку в этой ф-и. Если хотите ускорить дело, соберите gcc -g -o test_ddcci test_ddcci.c; ./test_ddcci и разберитесь почему падает :) там не очень сложно. Я просто уже спать хочу. ddccontrol-0.4.2-alt13.git20101010 -> sisyphus: * Sun Aug 28 2011 Igor Vlasenko <viy@altlinux> 0.4.2-alt13.git20101010 - fixed buffer overflow (closes: 26177) Теперь и у меня не падает. |