stl map에서 segmentation fault가 납니다..

cb2531의 이미지

map<int,u_int64_t>::iterator i;
i = UM.find(atoi(f));
if (i != UM.end() && (*i).second != 0)
r.push_back((*i).second);

(다른 변수들의 속성은
map<int,u_int64_t> UM;
char *f;
vector<u_int64_t>& r; 입니다)

core파일 bt해보니깐 #3은 세번째 if줄이구요
나머지는 이렇습니다.

#0 0x0806a64f in std::less<int>::operator()(int const&, int const&) const (this=0xcccbb60, __x=@0x37373719, __y=@0x682fb908)
at /usr/include/c++/3.2/bits/stl_function.h:197
#1 0x080a0efc in std::_Rb_tree<int, std::pair<int const, unsigned long long>, std::_Select1st<std::pair<int const, unsigned long long> >, std::less<int>, std::allocator<std::pair<int const, unsigned long long> > >::find(int const&) (this=0xcccbb58, __k=@0x682fb908)
at /usr/include/c++/3.2/bits/stl_tree.h:1276
#2 0x080a009f in operator!=<std::pair<const int, u_int64_t>, std::pair<const int, u_int64_t>&, std::pair<const int, u_int64_t>*> (
__x=@0x682fb90c, __y=@0xcccbb58) at /usr/include/c++/3.2/bits/stl_tree.h:253

무조건 발생하는게 아니라 가끔 죽는거라서 이유를 잘 모르겠습니다
다른 곳에서 저 맵을 건드리는건지..락은 확실히 걸었는데 말이죠
여러분들의 조언을 구합니다..^^

eek의 이미지

thread를 사용중이시면

컴파일 하실때 -D_REENTRANT -D_PTHREADS 를 추가하고 컴파일 후 실행 하세요

Perl 만세~~~

익명 사용자의 이미지

eek wrote:
thread를 사용중이시면

컴파일 하실때 -D_REENTRANT -D_PTHREADS 를 추가하고 컴파일 후 실행 하세요

-D_THREAD_SAFE -D_REENTRANT 포함해서 컴파일 하고 있습니다 ... ^^

SoftOn의 이미지

http://www.bdsoft.com/tools/stlfilt.html
이거 한번 사용해 보시죠..
사용해 본적은 없는데. stl error 메세지를 해독해 주는 겁니다.. ^^

pynoos의 이미지

C++ debugging mode compile에서는

-fno-default-inline

옵션을 넣어주시는 것이 core dump 해석하는데 좋습니다. inline으로 되어 있으면 call stack에는 나와 있어도 inline되어 이상한 곳으로 가기 때문이죠.

그리고, 위 backtrace가 i386 아키텍쳐에서 하는 것이라면, this pointer가 heap도아니고 stack도 아닌것이 꽤 이상한 번지에 있는 것으로 보아 다른 곳에서 버퍼 오버플로우가 일어 난듯합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.