같은 장비에서 다른 증상이 난다면..

muzie의 이미지

PXA270 에서 작업하고 있습니다만..
같은 코드를 돌려도 하나는 잘 돌아가고 하나는 커널패닉이 나버리네요 -_-;

자세하게 설명은 못하겠습니다만
쓰레드가 2개가 돌면서 하나는 데이터를 넣고 하나는 데이터를 꺼내는
생산자, 소비자 문제인데요.

생산자는 비디오 장치에 접근해서 데이터를 읽어 버퍼에 저장하는데 (read)
만약 데이터가 없으면 소비자를 잠시 재워둡니다. (이벤트로 관리)

그런데 어느순간이 되면 read를 하지 못하고 UI가 GTK로 구성되어있는데
이벤트를 받아버리거나, 혹은 그냥 커널패닉이 나면서 시스템이 아예 다운이 되네요.

중요한건 제가 사용하고 있는 장비에서만 그런증상이 난다는 것인데..
이게 하드웨어의 문제일까요, 아니면 디바이스 드라이버의 문제일까요. (물론 디바이스 드라이버는 같은것을 씁니다.)

여러분의 의견을 듣고 싶습니다.

P.S : GTK 기반의 UI입니다만, pthread를 사용하고 있습니다.. gthread를 사용하지 않아서
나는 문제일수도 있는 것인지요. 어차피 gthread도 내부적으론 pthread를 쓸텐데
임계구역 보호만 해준다면 문제가 생길것 같지 않은데 말이죠..

muzie의 이미지

Unhandled fault: imprecise external abort (0xc16) at 0x001e73cc
Internal error: : c16 [#1]
CPU: 0
PC is at put_page+0x4c/0xd4
LR is at skb_release_data+0x7c/0xb4
pc : [] lr : [] Tainted: P
sp : c787dde4 ip : c787ddf4 fp : c787ddf0
r10: c02db458 r9 : 00000040 r8 : c03364b8
r7 : c0335ec0 r6 : c5de5320 r5 : c5de5320 r4 : 00000000
r3 : 8b64debf r2 : 80000013 r1 : 80000093 r0 : d00a6808
Flags: Nzcv IRQs off FIQs on Mode SVC_32 Segment user
Control: 397F Table: A6598000 DAC: 00000015
Process Xmbx (pid: 449, stack limit = 0xc787c1a4)
Stack: (0xc787dde4 to 0xc787e000)
dde0: c787de08 c787ddf4 c01e41b4 c006c39c c5de5320 c5de5320 c787de1c
de00: c787de0c c01e3f3c c01e4144 c7b1bd60 c787de34 c787de20 c01e4098 c01e3f34
de20: 00000006 00000000 c787de64 c787de38 c021e990 c01e400c 0000000e 00000006
de40: 00000000 c5de5320 c0335ec0 c03364b8 00000040 c02db458 c787de88 c787de68
de60: c0201c34 c021e58c c67420bc c5de5320 c5de5320 c03362c0 c0335278 c787debc
de80: c787de8c c0202008 c0201bc8 c787debc c787de9c c004eefc c004e4ac a0000013
dea0: c0335268 c5de5320 00000000 00000008 c787dee4 c787dec0 c01ea18c c0201d70
dec0: c02db458 c0335008 00000000 c0335004 c0335020 ffffd7e1 c787df14 c787dee8
dee0: c01ea350 c01ea04c c787df18 c03350dc c0335020 c0335014 c0335004 ffffd7e1
df00: c787c000 c02ac750 c787df40 c787df18 c01ea4c0 c01ea2a8 0000012c 00000001
df20: c0326940 00000001 c03283e4 00000009 c0326900 c787df6c c787df44 c00483e4
df40: c01ea43c ffffffff 001712fc 04000000 c02a9d3c c787dfb0 c787c000 c031e604
df60: c787df7c c787df70 c0048598 c0048380 c787dfac c787df80 c0024dc0 c004855c
df80: c00478f0 000000c9 ffffffff 001712fc 04000000 00171348 0003c7c0 40289f5c
dfa0: 00000000 c787dfb0 c0023ba0 c0024cbc 00000000 001bbcc0 00193134 0000000c
dfc0: 001931bc 001712fc 00000002 00171348 0003c7c0 00000000 40289f5c be99d69c
dfe0: be99d6a0 be99d668 0014f084 0013f4a0 60000010 ffffffff e8900006 ec421000
Backtrace:
[] (put_page+0x0/0xd4) from [] (skb_release_data+0x7c/0xb4)
[] (skb_release_data+0x0/0xb4) from [] (kfree_skbmem+0x14/0xd8)
r5 = C5DE5320 r4 = C5DE5320
[] (kfree_skbmem+0x0/0xd8) from [] (__kfree_skb+0x98/0xd0)
r4 = C7B1BD60
[] (__kfree_skb+0x0/0xd0) from [] (tcp_v4_rcv+0x410/0x9fc)
r5 = 00000000 r4 = 00000006
[] (tcp_v4_rcv+0x0/0x9fc) from [] (ip_local_deliver+0x78/0x1a8)
[] (ip_local_deliver+0x0/0x1a8) from [] (ip_rcv+0x2a4/0x51c)
r8 = C0335278 r7 = C03362C0 r6 = C5DE5320 r5 = C5DE5320
r4 = C67420BC
[] (ip_rcv+0x0/0x51c) from [] (netif_receive_skb+0x14c/0x25c)
r7 = 00000008 r6 = 00000000 r5 = C5DE5320 r4 = C0335268
[] (netif_receive_skb+0x0/0x25c) from [] (process_backlog+0xb4/0x194)
[] (process_backlog+0x0/0x194) from [] (net_rx_action+0x90/0x17c)
[] (net_rx_action+0x0/0x17c) from [] (__do_softirq+0x70/0xf0)
[] (__do_softirq+0x0/0xf0) from [] (irq_exit+0x48/0x50)
[] (irq_exit+0x0/0x50) from [] (asm_do_IRQ+0x110/0x13c)
[] (asm_do_IRQ+0x0/0x13c) from [] (__irq_usr+0x40/0x80)
Code: e3821080 e121f001 e5903004 e2433001 (e5803004)
<0>Kernel panic - not syncing: Aiee, killing interrupt handler!

라는 식으로 계속 나오네요.
에러타입은 다 다른데 프로세스는 항상 Xmbx 라고 나옵니다.
이 프로세스의 문제인건지.. 흠..

// 아니군요.. 스왑퍼쪽에서도 에러날때도 있고 어플리케이션 자체에서 죽을때도 있군요..

nako의 이미지

반드시 g_thread 쓰셔야 합니다.

gtk에서 스레드 쓰실 때 주의하지 않으면 오동작을 많이 하더군요.

thread 관련해서 아래의 문서는 꼭 읽어 보셔야 합니다.

http://library.gnome.org/devel/gtk-faq/stable/x482.html
http://library.gnome.org/devel/gtk-faq/stable/x492.html

아마 thread 관련 문제라면 위 수단으로 90%이상 해결될 것입니다.

댓글 달기

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