DUMA: Detect Unintended Memory Access

cinsk의 이미지

이 글은 (efence로 더 유명한) DUMA에 관한 글입니다. 그림 입력과 formatting 문제로 직접 올리지 않고 link만 올립니다. DUMA를 쓰는 법은 잘 알려져 있기 때문에 원리에 대해서 주로 다룬 글입니다. (아래 글에 대한 제안/비판/의견 등은 이 곳에 올려 주시면 고맙겠습니다.)

본문 보기

HELP!!

제가 원하는 것은 이 글을 HTML iframe tag를 써서 이 블로그에 올리는 것인데, 아래처럼 하면, firefox에서는 잘 되는데 iexplorer version 6에서는 scrollbar가 좀 이상하게 붙더군요. (정확하게는, width를 %로 주었을 때, 무조건 가로 스크롤바가 붙고 글의 width에 비해 항상 view의 width가 작게 나옵니다.) 폰트도 좀 그렇고...

<iframe src="..." width="100%" height="600">
</iframe>

제 서버랑, KLDP 서버 설정 변경없이 깔끔하게 firefox/iexplorer에서 볼 수 있는 방법을 아시면 제게 알려주시기 바랍니다. (아마 iframe 속성과 inline css를 조절하면 될 것 같기도 한데... 제가 HTML/CSS는 잘 모르기 때문에.. ^^)

댓글

최피디의 이미지

깊이 있는 글에 감사드립니다. 좋은 글로 처음으로 DUMA를 알게 되었군요.
할당할 메모리 앞뒤로 특정한 값으로 초기화해줘서 더 잘 죽는 프로그램 환경을 만들어 준다는 아이디어가 인상적입니다.
그런데 할당이 일어날 때 그 앞뒤에 이미 할당된 메모리가 있는 지 어떤 원리로 검사할 수 있는지 궁금합니다.
할당된 메모리에 대해서 DUMA가 초기화 해버리진 않을 것이고 지난 할당에 대한 내용을 기억해두는 메모리가 있어
매번 메모리 할당 때 마다 검색하는 방법 밖에는 없을 거 같은데요.

다른 이야기입니다만, 메모리 릭에 대한 검출은 어떻게 하고 계시는지 노하우를 전수해주실 수 없으세요?
DUMA는 메모리 릭 감지에 대한 것과는 상관이 없는 라이브러리인거 같은데 그렇다고 볼 수 있겠지요?

감사합니다.

--최피디

KT하이텔, 앱스 개발자

cinsk의 이미지

앞뒤로 메모리가 있는지 검사하는 것이 아니고, 할당이 일어날때 좀 더 큰 분량을 할당해서 그 중 일부분만 사용자에게 돌려주는 것입니다.

DUMA도 (빌드할 때 따로 DUMA_NO_LEAKDETECTION를 설정하지 않는한) memory leak를 감지해 주기는 합니다만 따로 stack trace를 보여주지는 않습니다. Memory leak에 대한 자세한 것은 다음 기회에.. :)

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

최피디의 이미지

아 제가 엉뚱한 상상을 했군요 :)
메모리 릭에 관한 글 기대하겠습니다.

--최명진

KT하이텔, 앱스 개발자

primewizard의 이미지

블로그 구조가 어떻게 되어있는지 잘은 모르겠습니다만...^^;
frameborder="0" marginwidth="0" marginheight="0" 속성 추가해 보셨나요?

hexascii의 이미지

좋은 글이네요.

예전에 한번 관련 세미나를 들었는데,

Intel Software에서 개발하고 상용인 (Linux 버전도 있더군요)Vtuneswww.intel.com/cd/software/products/apac/kor/vtune/vpa/index.htm도 있습니다.

뭐 그 때 한국 Intel 영업 쪽에 계신분이 하신 세미나였는데, 받은 느낌은 역시 제조사에서 만든

Software는 정말 디테일하다는 점이었습니다.

하지만, 비싼 돈주고 사 쓸수 없으니, 이 포스트 역시 굉장히 감사하게 느껴지네요.

gurugio의 이미지


아..이거 임베디드쪽 선배들이 직접 만들어쓰던 방식이네요.
더 잘 만들어진 것이 라이브러리로 있다니 반갑습니다.

사실 임베디드쪽에서는 거의 모든 메모리 릭 감시 라이브러리가 동작하기 힘듭니다.
그래서 DUMA와 비슷한 원리로 몇개 직접 만들어쓰는 것들이 있습니다.
아직 다 읽어보지는 않았지만 임베디드나 소형 시스템에서도 쓸 수 있을것 같습니다.

----
세상을 바꾸는 것은 단 한 사람. 오직 하나님의 사람뿐이다.
개인 홈페이지가 생겼습니다 http://caoskernel.org
어셈러브를 개편중입니다 http://www.asmlove.co.kr

이광우의 이미지

efence가 DUMA가 되었군요. 좋은 글 감사합니다.

Be Creative For Fun!!

Be Creative For Fun!!

exman의 이미지

좋은 글 잘 보고갑니다. :-)

agfe2의 이미지

efence 가 업데이트 되지 않더니, DUMA가 됐네요. 참으로 좋은 정보입니다.
정리잘 해놓으셨네요. 잘 읽었습니다. 감사합니다.

사랑과 평화 넘치는 행복한 세상을 꿈꾸며

사랑과 평화 넘치는 행복한 세상을 꿈꾸며

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.