Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C]Потоки в linux, вопрос по pthread. 
V
    Опции темы
xvr
Дата 16.3.2012, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Пока вижу только, что window_repaint_send будет блокироваться (из за XLockDisplay), пока в ваше окно не свалится какой нибудь event.
И будет это происходить внутри обработчика сигнала. Вполне может все повиснуть


PM MAIL   Вверх
Alkash
Дата 16.3.2012, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Спасибо, убрал XLock\XUnlock из window_repaint_send win_loop - заработало.

Добавлено через 8 минут и 19 секунд
Рано порадовался-))) Теперь первое обращение к сокету - замечательно, работает. А вот второго уже дождаться не суждено. В связи с чем экран блокируется, ну и уже не разблокируется.


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
xvr
Дата 16.3.2012, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(Alkash @  16.3.2012,  12:10 Найти цитируемый пост)
Теперь первое обращение к сокету - замечательно, работает. А вот второго уже дождаться не суждено.

У вас сокет не закрывается (shutdown + close), а очередь вы себе заказали на 1 сокет (2й параметр в listen). Вот они больше и не подсоединяются

PM MAIL   Вверх
Alkash
Дата 16.3.2012, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Он закрываться должен - с выходом из приложения. Я к нему присоединяюсь из клиента, отсылаю необходимое - и клиентом отсоединяюсь до следующего коннекта. В принципе - работает. Но - когда я вызываю 
Код

blockDisplay();

 - после этого он не реагирует. При этом если отправить команды вызова unblockDisplay() или назчения времени - то все в порядке, принимает - отправляет. Чую - что где-то тут корень всех моих бед.


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Alkash
Дата 16.3.2012, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Выхлоп valgrind:
Код

Timer Thread
Initializing parameters to default values...
--2146-- REDIR: 0x421d8e0 (strncpy) redirected to 0x4029217 (strncpy)
Reading config file...
--2146-- REDIR: 0x421d890 (strncmp) redirected to 0x4022499 (_vgnU_ifunc_wrapper)
--2146-- REDIR: 0x42c7b30 (__strncmp_ssse3) redirected to 0x4029449 (strncmp)
--2146-- REDIR: 0x421e7c0 (memset) redirected to 0x4022499 (_vgnU_ifunc_wrapper)
--2146-- REDIR: 0x42bd370 (__memset_sse2) redirected to 0x402aa22 (memset)
--2146-- REDIR: 0x421e230 (memchr) redirected to 0x4029b00 (memchr)
--2146-- REDIR: 0x421d0d0 (strcpy) redirected to 0x402907b (strcpy)
==2146== Source and destination overlap in strcpy(0xbefa9f5c, 0xbefa9f5c)
==2146==    at 0x4029139: strcpy (mc_replace_strmem.c:311)
==2146==    by 0x804ADE4: trim (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x804AEF2: parse_config (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x80499CB: main (in /home/cynic/CCafe/CClient_/cclient)
==2146== 
value: 9030
--2146-- REDIR: 0x421e700 (memmove) redirected to 0x4022499 (_vgnU_ifunc_wrapper)
--2146-- REDIR: 0x42c0370 (__memmove_ssse3) redirected to 0x402aab3 (memmove)
--2146-- REDIR: 0x4219d20 (realloc) redirected to 0x40288a0 (realloc)
--2146-- REDIR: 0x421d620 (strlen) redirected to 0x4022499 (_vgnU_ifunc_wrapper)
--2146-- REDIR: 0x4224010 (__strlen_sse2_bsf) redirected to 0x402900f (strlen)
Final values:
port: 9030, MSG: 512
Window Thread
--2146-- REDIR: 0x421d060 (__GI_strcmp) redirected to 0x4029a0a (__GI_strcmp)
--2146-- REDIR: 0x421fe30 (rawmemchr) redirected to 0x402abd0 (rawmemchr)
Server: connect from host 127.0.0.1, port -18981.
block
--2146-- REDIR: 0x421eba0 (strcasecmp) redirected to 0x4029518 (strcasecmp)
--2146-- Reading syms from /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2 (0x4030000)
--2146--   Considering /usr/lib/i386-linux-gnu/libXcursor.so.1.0.2 ..
--2146--   .. CRC mismatch (computed 27b8283e wanted cf02d89f)
--2146--    object doesn't have a symbol table
--2146-- Reading syms from /usr/lib/i386-linux-gnu/libXrender.so.1.3.0 (0x5f6c000)
--2146--   Considering /usr/lib/i386-linux-gnu/libXrender.so.1.3.0 ..
--2146--   .. CRC mismatch (computed ca4b965a wanted ab7c529f)
--2146--    object doesn't have a symbol table
--2146-- Reading syms from /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0 (0x403b000)
--2146--   Considering /usr/lib/i386-linux-gnu/libXfixes.so.3.1.0 ..
--2146--   .. CRC mismatch (computed 966dfda3 wanted 7165e6b6)
--2146--    object doesn't have a symbol table
--2146-- REDIR: 0x421cea0 (index) redirected to 0x4028bc7 (index)
--2146-- REDIR: 0x421e3d0 (bcmp) redirected to 0x4022499 (_vgnU_ifunc_wrapper)
--2146-- REDIR: 0x42c9520 (__memcmp_ssse3) redirected to 0x402a64c (bcmp)
--2146-- REDIR: 0x421d010 (strcmp) redirected to 0x4022499 (_vgnU_ifunc_wrapper)
--2146-- REDIR: 0x42c66c0 (__strcmp_ssse3) redirected to 0x40299b8 (strcmp)
==2146== Syscall param writev(vector[...]) points to uninitialised byte(s)
==2146==    at 0x42711A5: writev (writev.c:56)
==2146==    by 0x40004: ???
==2146==  Address 0x4b7fe42 is 66 bytes inside a block of size 16,384 alloc'd
==2146==    at 0x402732C: calloc (vg_replace_malloc.c:467)
==2146==    by 0x406A551: XOpenDisplay (in /usr/lib/i386-linux-gnu/libX11.so.6.3.0)
==2146==    by 0x804A261: blockDisplay (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x804958F: parseCommand (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049788: read_from_client (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049C67: main (in /home/cynic/CCafe/CClient_/cclient)
==2146== 
start
==2146== Use of uninitialised value of size 4
==2146==    at 0x4058524: XDestroyWindow (in /usr/lib/i386-linux-gnu/libX11.so.6.3.0)
==2146==    by 0x80494CB: parseCommand (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049788: read_from_client (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049C67: main (in /home/cynic/CCafe/CClient_/cclient)
==2146== 
==2146== Invalid read of size 4
==2146==    at 0x4058524: XDestroyWindow (in /usr/lib/i386-linux-gnu/libX11.so.6.3.0)
==2146==    by 0x80494CB: parseCommand (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049788: read_from_client (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049C67: main (in /home/cynic/CCafe/CClient_/cclient)
==2146==  Address 0x4d0 is not stack'd, malloc'd or (recently) free'd
==2146== 
==2146== 
==2146== Process terminating with default action of signal 11 (SIGSEGV)
==2146==  Access not within mapped region at address 0x4D0
==2146==    at 0x4058524: XDestroyWindow (in /usr/lib/i386-linux-gnu/libX11.so.6.3.0)
==2146==    by 0x80494CB: parseCommand (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049788: read_from_client (in /home/cynic/CCafe/CClient_/cclient)
==2146==    by 0x8049C67: main (in /home/cynic/CCafe/CClient_/cclient)




--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
xvr
Дата 16.3.2012, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Может ему не нравится что вы открываете дисплей (XOpenDisplay) несколько раз?

PM MAIL   Вверх
Alkash
Дата 16.3.2012, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



О...а ведь точно-) Не заметил-) Спасибо!


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.