LINUX.ORG.RU
решено ФорумTalks

Помогите с gdb


0

1

Переписываюсь с майнтейнером minicom, по поводу бага:


Hi,

> >> Hi, i want connect to /dev/ttyUSB0 as User (group dialout). I run command in «KDE4 konsole» : minicom -D /dev/ttyUSB0 -b 115200, minicom answer me «segmentation fault».
> >> The contents of the «dmesg» :
> >> [293718.195129] minicom[26808]: segfault at 0 ip b759fca1 sp bf9b3030 error 6 in libc-2.15.so[b7538000+17e000].
> >> lsusb:
> >> Bus 002 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
> >> cat /etc/slackware-version
> >> Slackware 14.0
> >
> >Thanks for the report. Could you run minicom with gdb to get a backtrace
> >of the segfault? What would be needed to get more details on the
> >segfault.
> >You are running minicom-2.6-i486-1?
> >
> >
> >Adam
> >--
> >Adam adam____os.inf.tu-dresden.de
> > Lackorzynski http://os.inf.tu-dresden.de/~adam/
>
> Sorry for my terrible English.
>
> Okay. I hope I did it right. Version minicom 2.6-i486- 1 a standard binary package Slakware 14 .

Looks good. The strace is even more interesting.

> GDB result :
> Starting program: /usr/bin/minicom
> warning: Could not load shared library symbols for linux-gate.so.1.
> Do you need «set solib-search-path» or «set sysroot»?
> Program received signal SIGSEGV, Segmentation fault.
> 0xb7e50ca1 in _IO_getline_info_internal () from /lib/libc.so.6

Please type 'bt' to get a backtrace here.


> strace result:
> splinter@bastile:~/mywork/boiler$ tail -30 ~/source/Debug/minicom_strace.txt
> read(3, "", 4096) = 0
> _llseek(3, 0, [0], SEEK_SET) = 0
> read(3, «# Machine-generated file - use m»..., 4096) = 38
> read(3, "", 4096) = 0
> _llseek(3, 0, [0], SEEK_SET) = 0
> read(3, «# Machine-generated file - use m»..., 4096) = 38
> read(3, "", 4096) = 0
> _llseek(3, 0, [0], SEEK_SET) = 0
> read(3, «# Machine-generated file - use m»..., 4096) = 38
> read(3, "", 4096) = 0
> _llseek(3, 0, [0], SEEK_SET) = 0
> read(3, «# Machine-generated file - use m»..., 4096) = 38
> read(3, "", 4096) = 0
> _llseek(3, 0, [0], SEEK_SET) = 0
> mremap(0x5d408000, 1509945344, 1509949440, MREMAP_MAYMOVE) = -1 ENOMEM (Cannot allocate memory)
> mmap2(NULL, 1509949440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
> brk(0x63d35000) = 0x9d36000
> mmap2(NULL, 1510080512, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
> time(NULL) = 1357458514
> open(«/sys/devices/system/cpu/online», O_RDONLY|O_CLOEXEC) = 4
> read(4, «0-1\n», 8192) = 4
> close(4) = 0
> mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x5d208000
> munmap(0x5d208000, 1015808) = 0
> munmap(0x5d400000, 32768) = 0
> mprotect(0x5d300000, 135168, PROT_READ|PROT_WRITE) = 0
> mmap2(NULL, 1509949440, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
> read(3, «# Machine-generated file - use m»..., 4096) = 38
> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
> +++ killed by SIGSEGV +++
>
> Full log strace send can not. Its size is larger than 2 GB.

The absolutely astonishing thing are the numbers in the mmap and mremap
calls, those with the ENOMEM return codes. They try to handle around
1.5GB of memory, which fails (and it's ok that this fails).
Since minicom itself does not use mmap/mremap itself, this must come out
of the libc and could be the memory pool, e.g. for malloc.
Can you please describe in more detail what you are doing and what leads
to that memory situation?



>Please type 'bt' to get a backtrace here.

Я что то нифига ни в gdb ни minicom подобного найти не смог, помогите понять что требуется.

★★★★★

Последнее исправление: splinter (всего исправлений: 1)

Ответ на: комментарий от Artificial_Thought

Результат такой же как и без bt

splinter@bastile:~$ gdb /usr/bin/minicom
GNU gdb (GDB) 7.5
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 «i486-slackware-linux».
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/minicom...(no debugging symbols found)...done.
(gdb) bt
No stack.
(gdb) run
Starting program: /usr/bin/minicom
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need «set solib-search-path» or «set sysroot»?

Program received signal SIGSEGV, Segmentation fault.
0xb7e50ca1 in _IO_getline_info_internal () from /lib/libc.so.6
(gdb)
Бессмыслица какаято, может в исходникb minicom как то собираются с дебажной инфой? хотя в configure ничего про это я не нашел.

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

Дык ты сначала запусти, а потом bt. Конечно нет стека, раз ничего не работало.

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

звезды не показатель, я такое же быдло как и ты.

splinter ★★★★★
() автор топика

Can you please describe in more detail what you are doing and what leads to that memory situation?

Помогите пожалуйста перевести на правильный английский следующее:

Я подключаюсь к устройству на базе процессора sam9g45ek, но вряд ли это важно. Я использую команду minicom -D /dev/ttyUSB0 -b 115200, minicom может вести себя по разному, обычно он думая приблизительно около 7-10 секунд падает с сообщением «segmentation fault». Иногда, намного реже, подключение удается. Я не уверен в правильности вывода strace -o file.log minicom -D /dev/ttyUSB0 -b 115200, так как он очень долго думает(чем это слово заменить???) и падает в результате переполнения памяти, при этом сам file.log получается размером, примерно равным объему оперативной памяти. При использовании программ picocom и minicom таких проблем нет.

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

I try to connect to sam9g45ek-based device (but I guess that doesn't matter) using «minicom -D /dev/ttyUSB0 -b 115200» command, and minicom behaves differently. Usually it stalls for 7-10 seconds and then segfaults. In rare cases the connection is successful. I'm not sure that «strace -o file.log minicom -D /dev/ttyUSB0 -b 115200» output is correct as it stalls for some time and then fails due to memory insufficiency. file.log size equals RAM size approximately. I cannot reproduce the issue using picocom and minicom.

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

Тут же пришел ответ:

Ok, thanks for your infos. Do I understand it correctly that this happens immediately after you launch minicom -D ... ? Could you check whether the config files in /etc/minicom and ~/.minirc.* are looking ok (or delete them / move them away). You could also try to build minicom from source to see whether that makes a difference: http://os.inf.tu-dresden.de/~adam/minicom/minicom-2.6.1.90.tar.gz

Прошу тебя еще раз помочь с английским и перевести это: Падение minicom происходит просто при его запуске: splinter@bastile:~$ time minicom Ошибка сегментирования(Segmentation fault) real 0m16.125s user 0m6.177s sys 0m9.905s splinter@bastile:~$ LANG=C time minicom Command terminated by signal 11 6.34user 9.65system 0:16.01elapsed 99%CPU (0avgtext+0avgdata 5040maxresident)k 0inputs+0outputs (0major+406minor)pagefaults 0swaps

Файлы конфигурации перечисленные вами у меня отсутствуют, имеется только /etc/minicom.users. Полный список файлов в пакете Slackware minicom-2.6-i486-1:

PACKAGE NAME:     minicom-2.6-i486-1
COMPRESSED PACKAGE SIZE:     267K
UNCOMPRESSED PACKAGE SIZE:     1.0M
PACKAGE LOCATION: ./minicom-2.6-i486-1.txz
PACKAGE DESCRIPTION:
minicom: minicom (communications package)
minicom:
minicom: Minicom - a full featured menu-driven communications package similar
minicom: to the DOS program 'Telix'.  Also includes sz/rz - utilities used to
minicom: upload and download files using the Zmodem protocol.
minicom:
minicom:
minicom:
minicom:
minicom:
minicom:
FILE LIST:
./
install/
install/slack-desc
install/doinst.sh
usr/
usr/bin/
usr/bin/xminicom
usr/bin/ascii-xfr
usr/bin/runscript
usr/bin/minicom
usr/bin/lrz
usr/bin/lsz
usr/man/
usr/man/man1/
usr/man/man1/xminicom.1.gz
usr/man/man1/minicom.1.gz
usr/man/man1/lrz.1.gz
usr/man/man1/ascii-xfr.1.gz
usr/man/man1/sz.1.gz
usr/man/man1/runscript.1.gz
usr/man/man1/rz.1.gz
usr/man/man1/lsz.1.gz
usr/share/
usr/share/locale/
usr/share/locale/fi/
usr/share/locale/fi/LC_MESSAGES/
usr/share/locale/fi/LC_MESSAGES/minicom.mo
usr/share/locale/es/
usr/share/locale/es/LC_MESSAGES/
usr/share/locale/es/LC_MESSAGES/minicom.mo
usr/share/locale/hu/
usr/share/locale/hu/LC_MESSAGES/
usr/share/locale/hu/LC_MESSAGES/minicom.mo
usr/share/locale/pl/
usr/share/locale/pl/LC_MESSAGES/
usr/share/locale/pl/LC_MESSAGES/minicom.mo
usr/share/locale/id/
usr/share/locale/id/LC_MESSAGES/
usr/share/locale/id/LC_MESSAGES/minicom.mo
usr/share/locale/rw/
usr/share/locale/rw/LC_MESSAGES/
usr/share/locale/rw/LC_MESSAGES/minicom.mo
usr/share/locale/sv/
usr/share/locale/sv/LC_MESSAGES/
usr/share/locale/sv/LC_MESSAGES/minicom.mo
usr/share/locale/cs/
usr/share/locale/cs/LC_MESSAGES/
usr/share/locale/cs/LC_MESSAGES/minicom.mo
usr/share/locale/ro/
usr/share/locale/ro/LC_MESSAGES/
usr/share/locale/ro/LC_MESSAGES/minicom.mo
usr/share/locale/vi/
usr/share/locale/vi/LC_MESSAGES/
usr/share/locale/vi/LC_MESSAGES/minicom.mo
usr/share/locale/ru/
usr/share/locale/ru/LC_MESSAGES/
usr/share/locale/ru/LC_MESSAGES/minicom.mo
usr/share/locale/de/
usr/share/locale/de/LC_MESSAGES/
usr/share/locale/de/LC_MESSAGES/minicom.mo
usr/share/locale/de/LC_MESSAGES/lrzsz.mo
usr/share/locale/ja/
usr/share/locale/ja/LC_MESSAGES/
usr/share/locale/ja/LC_MESSAGES/minicom.mo
usr/share/locale/da/
usr/share/locale/da/LC_MESSAGES/
usr/share/locale/da/LC_MESSAGES/minicom.mo
usr/share/locale/zh_TW/
usr/share/locale/zh_TW/LC_MESSAGES/
usr/share/locale/zh_TW/LC_MESSAGES/minicom.mo
usr/share/locale/fr/
usr/share/locale/fr/LC_MESSAGES/
usr/share/locale/fr/LC_MESSAGES/minicom.mo
usr/share/locale/pt_BR/
usr/share/locale/pt_BR/LC_MESSAGES/
usr/share/locale/pt_BR/LC_MESSAGES/minicom.mo
usr/share/locale/nb/
usr/share/locale/nb/LC_MESSAGES/
usr/share/locale/nb/LC_MESSAGES/minicom.mo
usr/doc/
usr/doc/minicom-2.6/
usr/doc/minicom-2.6/AUTHORS
usr/doc/minicom-2.6/ChangeLog
usr/doc/minicom-2.6/COPYING
usr/doc/minicom-2.6/FILE_ID.DIZ
usr/doc/minicom-2.6/README
usr/doc/minicom-2.6/INSTALL
usr/doc/minicom-2.6/NEWS
usr/doc/minicom-2.6/doc/
usr/doc/minicom-2.6/doc/TODO.lrzsz
usr/doc/minicom-2.6/doc/Announce-1.83
usr/doc/minicom-2.6/doc/Announce-1.82.1
usr/doc/minicom-2.6/doc/README.lrzsz
usr/doc/minicom-2.6/doc/QuickStart.modemu
usr/doc/minicom-2.6/doc/Todo.Irix.dif
usr/doc/minicom-2.6/doc/fselector.txt
usr/doc/minicom-2.6/doc/Todo.emacskey.dif
usr/doc/minicom-2.6/doc/HistSearch
usr/doc/minicom-2.6/doc/minirc.dfl
usr/doc/minicom-2.6/doc/Todo
usr/doc/minicom-2.6/doc/copyright.modemu
usr/doc/minicom-2.6/doc/suomeksi
usr/doc/minicom-2.6/doc/Macros
usr/doc/minicom-2.6/doc/Announce-1.82
usr/doc/minicom-2.6/doc/Announce-1.78
usr/doc/minicom-2.6/doc/Todo.175
usr/doc/minicom-2.6/doc/minicom.FAQ
usr/doc/minicom-2.6/doc/Todo.fsel
usr/doc/minicom-2.6/doc/modemu.README
usr/doc/minicom-2.6/doc/COMPATABILITY.lrzsz
usr/doc/minicom-2.6/doc/pl-translation.txt
usr/doc/minicom-2.6/doc/portugues-brasil
usr/doc/minicom-2.6/doc/japanese
usr/doc/minicom-2.6/doc/Locales
usr/doc/minicom-2.6/TODO
usr/doc/lrzsz-0.12.21/
usr/doc/lrzsz-0.12.21/README.cvs
usr/doc/lrzsz-0.12.21/AUTHORS
usr/doc/lrzsz-0.12.21/COPYING
usr/doc/lrzsz-0.12.21/README.tests
usr/doc/lrzsz-0.12.21/COMPATABILITY
usr/doc/lrzsz-0.12.21/README.isdn4linux
usr/doc/lrzsz-0.12.21/README-alpha
usr/doc/lrzsz-0.12.21/README.gettext
usr/doc/lrzsz-0.12.21/README
usr/doc/lrzsz-0.12.21/INSTALL
usr/doc/lrzsz-0.12.21/README.systems
usr/doc/lrzsz-0.12.21/NEWS
usr/doc/lrzsz-0.12.21/TODO
usr/doc/lrzsz-0.12.21/THANKS
etc/
etc/minirc.dfl.new
etc/minicom.users.new

Собрал minicom с исходников по указанной вами ссылке( ./configure --prefix=/home/splinter/INSTALL/minicom & make -j4 & make install ). Minicom запускается мгновенно, ошибок не обнаруженно, подключение к устройству выглядит как стабильное и работающее. Большое спасибо!

splinter ★★★★★
() автор топика
Ответ на: комментарий от post-factum

post-factum я тебя очень прошу переведи, только первый и последний параграф, потом я отправлю письмо alien bob или патрику что бы они исправили пакет в slackware.

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

Ну не было меня у компа, незачем дважды просить, я специально для тебя открытой вкладку оставил :).

minicom fails while starting:

splinter@bastile:~$ LANG=C time minicom

Command terminated by signal 11 6.34user 9.65system 0:16.01elapsed 99%CPU (0avgtext+0avgdata 5040maxresident)k 0inputs+0outputs (0major+406minor)pagefaults 0swaps

Configuration files you've mentioned are missing in my system except /etc/minicom.users. Here is full file list in minicom-2.6-i486-1 Slackware package:

…тут твоя простыня…

I've built minicom from sources I got via your link ( ./configure --prefix=/home/splinter/INSTALL/minicom & make -j4 & make install ). Minicom starts quickly without errors, the connection with my device seems to be stable. Thanks a lot.

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

я снимаю шляпу перед тобой! спасибо.

splinter ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Что то он походу дела не понял :-)


So, just to make sure I understand that correctly: minicom-2.6.1.90
also exhibits this behaviour and segfaults?
Could you maybe use valgrind to see which malloc is allocating this
whole lot of memory?

splinter ★★★★★
() автор топика
Ответ на: комментарий от post-factum

я написал: minicom-2.6.1.90 - working correctly. there are no errors.
minicom-2.6(Slackware package) - does not work. Segmentation fault at startup.

он написал: Ok, good. I guess no action required on my side then :)

Как бы теперь Патрику написать, что бы он minicom обновил.

splinter ★★★★★
() автор топика
Ответ на: комментарий от post-factum

я у него в бане, когда он запостил о своей болезни (в 2005 году что ли), я написал ему какую то хрень на ломаном английском, скорее всего он не стал вдаваться в мой «йа твой дом труба щаталь» и просто меня забанил :-)

splinter ★★★★★
() автор топика
Ответ на: комментарий от post-factum

как бы там ни было он обязательно ему сообщит.

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