리눅스에서 멀티스레드 기반으로 프로그램을 작성하고 있습니다.
프로그램 구조는 단순합니다. 하나의 메인 스레드가 있고, 복수개의 하위 스레드(같은 함수로 생성되는)가 있어서 메인 스레드는 특정 타이밍마다 하위 스레드를 깨워서 일시키는.. 그런 구조인데요.
pthread에서 suspend, resume이 필요한 구조여서 하위 스레드에 SIGUSR1에 대한 핸들러를 등록해놓고 메인 스레드에서 pthread_kill()함수로 SIGUSR1을 해당 하위 스레드에 날리고 하위 스레드는 sigwait()으로 기다리고 있다가 날아오면 할 일 하는 방식입니다.
문제가 있는데, 프로그램을 실행시키다보면 실행중에 아무때나 segmentation fault가 발생합니다. 디버깅해보니 SIGSEGV가 날아왔다고 인식해서 발생하는 것으로 확인되었습니다.