отказ сегментации на pthread_mutex_lock

<context:property-placeholder location="file:/apps/tomcat/ath/ath_conf/pcr.application.properties" />

Это работает для меня. Путь к локальной машине разработки - C: \ apps \ tomcat \ ath \ ath_conf и в файле server / apps / tomcat / ath / ath_conf

Оба варианта работают для меня

5
задан Cœur 3 July 2017 в 15:02
поделиться

2 ответа

решил это, и меня это очень раздражает. Я хотел отправить Producer * в качестве аргумента функции, которую запускает Pthread, поэтому я использовал & (* iter), где iter - итератор, который запускается в векторе производителей.

я мало что заметил, что это было (справедливо) a vector , что означает, что я отправляю Producer * *, который дал неопределенные результаты. гррррр. Очевидно, я этого не заметил, потому что Pthreads находится на чистом C и поэтому использует void *, поскольку это единственный способ принимать аргументы любого типа.

5
ответ дан 14 December 2019 в 08:59
поделиться

Присоедините отладчик и выяснить точно , что вызывает segfault. Возможно, какой-то указатель просто указывает на случайность или неинициализированную область.

Также запустите memcheck valgrind и посмотрите, что там написано.

edit

В ответ на комментарии ниже, использование API pthread где-то звучит некорректно. Я рекомендовал "Программирование PThread" О'Рейли в качестве справочного материала. Это то, что меня подтолкнуло :) Я догадался, потому что использование API перемещает указатель внутри структуры pthread_mutex_t куда-то опасно. Этого не должно происходить при правильном использовании API.

2
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: