kernel stack overflow

cnyld의 이미지

안녕하세요...

kernel stack overflow ooops 가 나는데, 원인을 잘 모르겠습니다.
조금만 도와주시면 감사하겠습니다.

일단 제가 파악한건, linux kernel stack은 4K로 돌고 있습니다.
그리고, 이 문제는, 두 함수가 서로 call한다거나,
아주 큰 arrary를 변수로 잡는다거나,
interrupt 가 많이 pending 되어 있는 3경우 정도로 보고있습니다.
혹시 다른 경우도 있을수 있나요?

더 궁금한것은, 과연 kernel stack (4K) 가 무엇인가? 하는 겁니다.

여기서 stack이라 함은, 아마도, 함수가 호출될 때, 실행중인 함수 내부에 대한 정보들,
즉, register들이나, local 변수들이 되겠죠, 이것들을 저장하는 공간 맞나요?
만약 그렇다면, stack size가 4K라 함은,
하나의 함수내에 local 변수들이 총 4K를 넘으면 안된다는 겁니까?
하지만, 4K는 사실 그렇게 큰게 아니지 않습니까?
interger arrary 1000 개 짜리 하나만 잡아도 4K인데요...
하여간, kernel stack overflow 라는 놈이, 이 4K 범위를 넘어선다는 건가요?

아니면,
이 stack 을 저장하기 위한 memory가 어딘가에 잡힐텐데,
stack을 쌓아가다보니까, 이 총 공간이 모자라서 더 쌓을 수가 없다는 뜻인가요?
만약 그렇다면, stack 총 공간을 늘릴 수 있습니까?

만약, kerel stack overflow 를 경험하시고, 고민하시고, 해결하신분 있으시면,
좀만 도와주시면 감사하겠습니다.

--------------------------------------------------------------------------
Kernel stack overflow in process c589a000, r1=c589a2d0
NIP: C009AB28 XER: 20000000 LR: C009AAB4 SP: C589A2D0 REGS: c589a220 TRAP: 1000 Not tainted
MSR: 00009030 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c589a000[62] '' Last syscall: 536870912
last math 00000000 last altivec 00000000
PLB0: bear= 0x00000000 acr= 0x00000000 besr= 0x00000000
PLB0 to OPB: bear= 0x00000000 besr0= 0x00000000 besr1= 0x00000000

GPR00: 8146B675 C589A2D0 C589A000 00000041 D9979E20 C589A420 351F6D2F D9979E20
GPR08: 76500CAE 9E034429 197207EF 585125D5 9E7636C7 100B9D10 00000001 00000000
GPR16: 00000040 C589AB30 000005DC 00000000 00000000 000005C8 00000014 C0180000
GPR24: 0000003C C589A7A4 ED5F38F6 200E7B8F 48FCBA98 0A591804 1A8CA891 C589A308
Call backtrace:
00000000 C009ADB0 C009AF68 C009C200 C00D849C C00D3D4C C00D3F88
C00DCC70 C00DCDB8 C0100F24 C00D475C C00DAE9C C00D96CC C00C6E94
C00C7048 C00C71C4 C001DB50 C0104B88 C00BE000 D4FC40EC D4FC4238
D4FEAF98 D4FEB21C D4AC37D4 D4AC19E4 D4AC1F34 D4C3A154 C0006F98
Kernel panic: kernel stack overflow
In interrupt handler - not syncing

prether의 이미지

Kernel mode stack은 4KB, 8KB둘중 하나를 선택할 수 있는걸로 알고 있습니다.

8KB짜리를 사용해보심이.... 그런데 이걸 바꾸려면 어디서해야 하는지는 저도 ㅡ.ㅡ;

Kernel mode stack은 control flow가 kernel mode에서 돌아가야 하는 상황에서
자동변수를 저장하기 위해 사용하는 stack입니다.
보통 4KB, 8KB면 충분하다고 보는데 저건 좀 희귀한 에러네요.

/***************************************
Being the one is just like being in love.
***************************************/

댓글 달기

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