regex 사용시 Segmentation fault 관련 에러가 있는지..
글쓴이: leolo / 작성시간: 월, 2014/04/28 - 9:03오전
특별히 코드에는 문제가 없는거 같은데, 다음과 같은 에러가 발생합니다.
원인이 뭘까요..
bool b = false; regex_t regex; int reti; char msgbuf[100]; reti = regcomp(®ex, pattern, REG_EXTENDED); if( reti ) { fprintf(stderr, "Could not compile regex\n"); exit(1); } /* Execute regular expression */ reti = regexec(®ex, str, 0, NULL, 0); if( !reti ){ printf("Match"); b = true; } else if( reti == REG_NOMATCH ){ printf("No match"); } else { regerror(reti, ®ex, msgbuf, sizeof(msgbuf)); fprintf(stderr, "Regex match failed: %s\n", msgbuf); exit(1); } regfree(®ex); return b;
#0 0x000000380fa75472 in malloc_consolidate () from /lib64/libc.so.6 #1 0x000000380fa77e28 in _int_free () from /lib64/libc.so.6 #2 0x000000380facb3db in re_compile_internal () from /lib64/libc.so.6 #3 0x000000380facc20f in regcomp () from /lib64/libc.so.6 #4 0x000000000042448a in MatchPattern (str=0x7fa1ba4d5460 "8425", pattern=0x7fa1bd6dc108 "\\<13[0-9]{2}\\>") at util/Util.cpp:27 #5 0x000000000040d83c in CEadtRecvThread::GetUCMSvrInfo (this=0x1253ba0, pszMemberID=0x7fa1ba4d5394 "vvvv", pszDeviceID=0x7fa1ba4d5460 "8425", Dev=...) at EadtRecvThread.cpp:457 #6 0x000000000040fade in CEadtRecvThread::ReqAuth (this=0x1253ba0, CINF=0x7fa1b4009640, pszAccount=0x7fa1ba4d5394 "vvvv", pszDeviceID=0x7fa1ba4d5460 "8425", pszUniqueNO=0x7fa1ba4d552c "") at EadtRecvThread.cpp:723 #7 0x000000000040e0f9 in CEadtRecvThread::DataMessage (this=0x1253ba0, CINF=0x7fa1b4009640, pszBuff=0x7fa1ba4d58e0 "", nBuffSize=50) at EadtRecvThread.cpp:555 #8 0x000000000040d4e7 in CEadtRecvThread::EadtRecv (this=0x1253ba0) at EadtRecvThread.cpp:401 #9 0x000000000040c0cb in CEadtRecvThread::EadtRecvThread (pvArg=0x1253ba0) at EadtRecvThread.cpp:54 #10 0x000000380fe07851 in start_thread () from /lib64/libpthread.so.0 #11 0x000000380fae767d in clone () from /lib64/libc.so.6 (gdb)
Forums:
코드상으로는 문제가 없어 보이는데, gdb 상으로는
코드상으로는 문제가 없어 보이는데, gdb 상으로는 thread safe 문제가 아닐까 싶군요.
http://stackoverflow.com/questions/4404574/are-posix-regcomp-and-regexec-threadsafe-in-specific-on-gnu-libc
참고해 보세요.
댓글 달기