В общем пишу сканер сети (сканирует все smb шары - ищет файлы по заданным параметрам). Обычного сканирования мне стало мало, больно уж медленно происходит. Решил сделать его многопоточным, вот тут и появились проблемки - программа вылетает с сообщением Segmentation fault.
Схема работы функции запуска потоков такая:
- делим список хостов на несколько равных частей
- создаем обьекты-сканеры (они себе создают по одному Самба-контексту)
- создаем потоки, кот. вызывают функцию сканирования для этих обьектов
- ждем завершения потоков
Сделаю сразу несколько замечаний:
- обьекты-сканеры добавляют данные в обьект-список_файлов, метод добавления реализован в виде критической секции через мьютексы
- в потоках не вызываются никакие функции работающие с какими-либо другими общими данными
- при запуске под дебаггером, при просмотре стека, видно, что ошибка произошла в _int_malloc (), вот состояние стека на момент краха программы:
(gdb) i stack
#0 0x00587024 in _int_malloc () from /lib/tls/libc.so.6
#1 0x0058610d in malloc () from /lib/tls/libc.so.6
#2 0x00cc3f68 in Realloc (p=0x9d2a460, size=1) at lib/util.c:890
#3 0x00ced851 in cli_receive_trans (cli=0xbdd214b0, trans=50, param=0xbf289f20, param_len=0xbf289f24, data=0xbf289f28, data_len=0xbf289f2c) at libsmb/clitrans.c:202
#4 0x00cebaf1 in cli_list_new (cli=0xbdd214b0, Mask=0xbf28b840 "WINDOWS\\*", attribute=22, fn=0xc9fbb0 <dir_list_fn>, state=0x9d29f50) at libsmb/clilist.c:22
#5 0x00cec73d in cli_list (cli=0x64d300, Mask=0xbf28b840 "WINDOWS\\*",
attribute=42080, fn=0xc9fbb0 <dir_list_fn>, state=0x9d2e530)
at libsmb/clilist.c:486
#6 0x00ca04f0 in smbc_opendir_ctx (context=0x9b01358, fname=0x9d1d014 "smb://10.3.2.2//tools/WINDOWS") at libsmb/libsmbclient.c:1759
#7 0x080527c6 in ZScanFileList::scanDir(char const*, ZSMBCCTX*, ZFileValidator*, ZFeList*) (this=0x9b01300, path=0xbf28c650 "smb://10.3.2.2/", ctx=0x0, fv=0x0, fl=0x0) at zscanfilelist.cpp:91
Параметры системы:
Samba 3.0.0-15, kernel 2.4.22, gcc 3.3.2
Какие есть идеи? Может в самбе ошибка?
Заранее благодарен.
Ответ на:
комментарий
от Dead
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от zhuk
Ответ на:
комментарий
от fortl
Ответ на:
комментарий
от zhuk
Ответ на:
комментарий
от zhuk
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум 100% процессора в маллоке, Или как убить кучу при написании модуля Apache (2005)
- Форум проблемка с Samba (2001)
- Форум Samba 3 PDC проблемка (2006)
- Форум multithread ping (2012)
- Форум Portmaster multithread (2014)
- Форум mplayer multithreaded (2009)
- Форум java multithreading (2008)
- Форум gprof + multithreading (2008)
- Форум vector и multithreading (2016)
- Форум c++ graph multithreading (2014)