pthread , Segfault
글쓴이: hongwoo / 작성시간: 월, 2004/05/03 - 6:20오후
pthread를 이용하여 간단한 프로그램을 만들다가 컴파일 옵션에 -lpthread하고 -D_REENTRANT 옵션 추가한후 컴파일을 하고 나서 실행시키면 다음과 같은 에러가 나네요....
혹시 같은 에러 경험하시분 있나요 ? 필요한 옵션( -lpthread하, D_REENTRANT) 은 확실히 줬습니다.
strace 결과를 올려봅니다.
[root@aero D]# strace ./hwtest execve("./hwtest", ["./hwtest"], [/* 38 vars */]) = 0 uname({sys="Linux", node="aero", ...}) = 0 brk(0) = 0x80513cc old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40016000 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=106681, ...}) = 0 old_mmap(NULL, 106681, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40017000 close(3) = 0 open("/lib/libpthread.so.0", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360O\0"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0755, st_size=557583, ...}) = 0 old_mmap(NULL, 90460, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40032000 mprotect(0x40041000, 29020, PROT_NONE) = 0 old_mmap(0x40041000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe000) = 0x40041000 old_mmap(0x40048000, 348, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40048000 close(3) = 0 open("/usr/lib/libstdc++-libc6.2-2.so.3", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\252\1"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0644, st_size=436302, ...}) = 0 old_mmap(NULL, 294148, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40049000 mprotect(0x40082000, 60676, PROT_NONE) = 0 old_mmap(0x40082000, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x38000) = 0x40082000 old_mmap(0x4008f000, 7428, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4008f000 close(3) = 0 open("/lib/libm.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320H\0"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0755, st_size=615522, ...}) = 0 old_mmap(NULL, 138964, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40091000 mprotect(0x400b2000, 3796, PROT_NONE) = 0 old_mmap(0x400b2000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x20000) = 0x400b2000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\303"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0755, st_size=5723951, ...}) = 0 old_mmap(NULL, 1265160, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x400b3000 mprotect(0x401df000, 36360, PROT_NONE) = 0 old_mmap(0x401df000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x12b000) = 0x401df000 old_mmap(0x401e4000, 15880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x401e4000 close(3) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x401e8000 munmap(0x40017000, 106681) = 0 getrlimit(0x3, 0xbffff5b4) = 0 setrlimit(RLIMIT_STACK, {rlim_cur=2044*1024, rlim_max=RLIM_INFINITY}) = 0 getpid() = 2946 rt_sigaction(SIGRT_0, {0x4003bec0, [], 0x4000000}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x4003b4bc, [], 0x4000000}, NULL, 8) = 0 rt_sigaction(SIGRT_2, {0x4003bf4c, [], 0x4000000}, NULL, 8) = 0 rt_sigprocmask(SIG_BLOCK, [32], NULL, 8) = 0 _sysctl({{CTL_KERN, KERN_VERSION}, 2, 0xbffff5bc, 34, (nil), 0}) = 0 --- SIGSEGV (Segmentation fault) --- +++ killed by SIGSEGV +++
Forums:
인용보다는 코드로 해주세요,이모티콘이 생기내요,
인용보다는 코드로 해주세요,
이모티콘이 생기내요,
핫.. 수정했습니다.
여기 사용하는게 익숙하지 않아서요.. quote에서 code로 수정했습니다.
-----------------------------
in the real-time scheduler !
Re: 핫.. 수정했습니다.
혹시 pthread 로 프로세스 동기화를 하신 건 아닌지요?
축약된 소스코드를 올리시면 아마 좀 더 빨리 해결될 듯 싶네요.
Orion Project : http://orionids.org
댓글 달기