Ubuntu 9.10 설치하고 나서, 3D 와 2D 가속기능좀 쓰겠다고 FGLRX 를 설치했건만
화면 해상도 안맞아서 아예 화면이 안떠버린다.
이를 해결하기 위해 아래와 같이 하자.
How I resolved:
Reinstalled a clean copy of Jaunty.
After applying updates, I opened Synaptic and removed all
xserver-xorg-* useless packages (related to other VGA). Here's the list:
xserver-xorg-video-all
xserver-xorg-video-apm
xserver-xorg-video-chips
xserver-xorg-video-cirrus
xserver-xorg-video-intel
xserver-xorg-video-mga
xserver-xorg-video-neomagic
xserver-xorg-video-nv
xserver-xorg-video-openchrome
xserver-xorg-video-rendition
xserver-xorg-video-s3
xserver-xorg-video-s3virge
xserver-xorg-video-savage
xserver-xorg-video-siliconmotion
xserver-xorg-video-sis
xserver-xorg-video-sisusb
xserver-xorg-video-tdfx
xserver-xorg-video-trident
xserver-xorg-video-tseng
xserver-xorg-video-voodoo
After, I installed the xorg-driver-fglrx package and all dependencies, via Synaptic.
Next step, opened a terminal and typed:
sudo aticonfig --initial -f
Finally, I crossed my fingers and reboot. And I'm still here
좋다. 여기까지 해주고 부팅해도 해상도 안맞아서 안뜨는건 마찬가지. (내 모니터에서..^^)
Ctrl+Alt+F2 로, 콘솔 로그인 들어가서,
/etc/X11/xorg.conf 파일 중 Screen 섹션을 아래와 같이 수정한다.
분석/설계자와 혹은 필요 시 고객과의 협력으로, 아키텍처 요구사항을 도출하고 정의한 후, 이를 기반으로 S/W 아키텍처를 설계해낼 수 있는 능력이다.
사실, 대부분 사내 Framework 를 활용하는 경우가 많아, 기존 문서를 재사용 하는 경우가 많지만, 어떠한 경우는 고객이 먼저 프레임워크를 제시하거나 궂이 기존 사내 Framework 를 적용하지 않아도 되거나 사내 Framework 로는 아키텍처 요구사항을 Meet 할 수 없는 경우가 생긴다.
또한, Framework 이 있다고, 아키텍처 설계가 같아지는 것도 아니다. Framework 는 아키텍처를 지원하기 위한 산출물 중 하나에 불과한 것으로, 전체적인 시스템 요소간의 관계와 구성을 잘 Catch 하고, 이를 명확한 방법으로 표현하고, 실현 가능하도록 설계하는 능력이 필요하다.
아키텍처의 명확한 표현을 위해 여러가지 표현 도구나 표현 방법을 사용하는데, 사실 아키텍처를 표현하는데에는 표준이 없으므로, 모든 아키텍처 문서마다 그 표현이 다름은 물론, 한명의 아키텍트의 투입된 프로젝트별로도 그 표현방법이 틀리다. 나의 경우는, 파워포인트를 사용하는데에 시간을 소비하는게 아깝다는 생각과, 표준화 된 표현이 필요하다는 이유로, FMC 표현법을 기반으로 다이어그램을 그리는 편이다. Visio 를 사용할 수 있다면 FMC Stencil 을 활용하는 것도 괜챦은 방법이다.
그러기 위해서는, 다양한 프로젝트 경험과 구축 사례에 대한 연구가 필수적이라 하겠다. 또한, 요구사항을 만족하기 위한 아키텍처 요소를 적절하게 선택하고 설계 해 내기 위해서는, 다양한 컴포넌트/라이브러리/프레임워크/기술요소 에 대한 사용 및 구현 경험, 아키텍처 시뮬레이션 경험이 필요하다.
커뮤니케이션 능력
요구사항 도출 능력
아키텍처 표현 능력
다양한 컴포넌트, 라이브러리, 프레임워크 사용 경험
기술요소에 대한 지식
다양한 구축 사례 연구
많은 프로젝트 경험 지식화
2. 프레임워크 설계/구현력
아키텍처를 정의하고 설계하였다면, 아키텍처를 실현하기 위한 구현체가 필요하고, 대부분 이를 프레임워크 형태로 개발자에게 제공한다.
프레임워크는, 사내에서 개발한 Framework 이건, 오픈소스 진영의 Framework 조합이건, 자체 개발한 형태이건, 프로젝트의 요구사항을 충족시키는 것은 물론이고, 향후 확장을 고려한 설계를 적용하고 이를 구현하여야 한다.
프레임워크는 반드시 UML 과 같은 표준화된 방법으로 명확히 설계를 한 후 구현하도록 하여야 향후 재사용이나 확장, Refactoring 이 용이해진다. 만약 충분한 고민 없이 Framework 을 구현하거나 사용한다면, 유지보수나 확장성이 떨어지는것은 물론이고, 심지어 구현단계에서 반드시 넘기 힘든 벽에 부딫히고 좌절하게 된다. 이를 위해, UML 과 같은 표준화된 설계 표기법과 툴 사용 능력이 있어야 한다.
구현 시에는, 성능과 안정성, 확장성, 보안성의 기본적인 요소를 만족할 수 있도록 구현하여야 하며, 문서화를 고려하여, 충분한 주석을 삽입해 주어야 한다. 또한, 구현하는 언어, 사용하는 라이브러리 및 기술에 대하여 많은 테스트 성 코드 및 프로젝트를 생성하여 테스트 중심의 개발 방법으로 진행하는 것이, 견고한 프레임워크를 개발하는데에 도움이 된다.
많은 코딩 경험과 기술 구현 경험이 필요한 과정이므로, 아키텍트에게 가장 부담이 되는 단계가 아닌가 생각된다.
"http1-w2 [container1-15]" prio=10 tid=0x000000010140f2c0 nid=0x3b runnable [0xffffffff578fe000..0xffffffff578ff92
8] at jeus_jspwork._600_thead_5fmw_5fjsp._jspService(_600_thead_5fmw_5fjsp.java:65)
- waiting to lock <0xffffffff7238ca98> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w0 [container1-13]" prio=10 tid=0x0000000101196f40 nid=0x39 waiting for monitor entry [0xffffffff57cfe000..
0xffffffff57cff828]
at jeus_jspwork._600_thead_5fmw_5fjsp._jspService(_600_thead_5fmw_5fjsp.java:65)
- waiting to lock <0xffffffff7238ca98> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w1 [container1-16]" prio=10 tid=0x0000000100aa7680 nid=0x3a waiting for monitor entry [0xffffffff57afe000..
0xffffffff57aff8a8]
at jeus_jspwork._600_thead_5fmw_5fjsp._jspService(_600_thead_5fmw_5fjsp.java:64)
- waiting to lock <0xffffffff7238ca98> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w2 [container1-15]" prio=10 tid=60000000024ffc40 nid=60 lwp_id=1583373 runnable [9fffffff786ff000..9fffffff
78700a40]
at jeus_jspwork._600_thread_5fmw_5fjsp._jspService(_600_thread_5fmw_5fjsp.java:65)
- waiting to lock <9fffffffb87909d0> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w1 [container1-16]" prio=10 tid=60000000024bc480 nid=59 lwp_id=1583372 waiting for monitor entry [9fffffff7
8900000..9fffffff78900ac0]
at jeus_jspwork._600_thread_5fmw_5fjsp._jspService(_600_thread_5fmw_5fjsp.java:64)
- waiting to lock <9fffffffb87909d0> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w0 [container1-13]" prio=10 tid=60000000024b6180 nid=58 lwp_id=1583371 waiting for monitor entry [9fffffff7
8b00000..9fffffff78b00d40]
at jeus_jspwork._600_thread_5fmw_5fjsp._jspService(_600_thread_5fmw_5fjsp.java:64)
- waiting to lock <9fffffffb87909d0> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
▶결과설명: 동기화블록진입순서대로, w2는‘runnable’으로표시되고, w0과 w1 Thread는‘waiting for monitor entry’로표시된다. 이는 SunOS 플랫폼에서와마찬가지로 HotSpot계열의 JVM을사용하기때문에매우유사하다.
[AIX / JDK 1.5]
lThread 실행순서 : w2 à w1 à w0
lDump 내용
3XMTHREADINFO "http1-w0" (TID:0x0000000114948E00, sys_thread_t:0x00000001146DE4D0, state:B, native ID:0x00000000000D00E7) prio=5
4XESTACKTRACE at jeus_jspwork/_600_thread_5fmw_5fjsp._jspService(_600_thread_5fmw_5fjsp.java:63(Compiled Code))
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/engine/ServletWrapper.execute(ServletWrapper.java:220)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.execute(JspServletWrapper.java:139)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
3XMTHREADINFO "http1-w1" (TID:0x0000000114A91900, sys_thread_t:0x00000001149E9F70, state:B, native ID:0x00000000001AA06F) prio=5
4XESTACKTRACE at jeus_jspwork/_600_thread_5fmw_5fjsp._jspService(_600_thread_5fmw_5fjsp.java:63)
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/engine/ServletWrapper.execute(ServletWrapper.java:220)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.execute(JspServletWrapper.java:139)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
3XMTHREADINFO "http1-w2" (TID:0x0000000114CC6000, sys_thread_t:0x00000001149EA450, state:CW, native ID:0x00000000001460CB) prio=5
4XESTACKTRACE at jeus_jspwork/_600_thread_5fmw_5fjsp._jspService(_600_thread_5fmw_5fjsp.java:64)
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/servlets/JspServlet.execute(JspServlet.java:359)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
▶결과설명: 첫번째 Thread인 w2는동기화블록진입후‘state:CW’상태가되었고, w1과 w0은 Monitor에대한 Lock을기다리면서‘state:B’로변하는것을볼수있다.
[AIX / JDK 1.4]
lThread 실행순서 : w1 à w2 à w0
lDump 내용
3XMTHREADINFO "http1-w2" (TID:0x3031E040, sys_thread_t:0x387295A8, state:CW, native ID:0x393C) prio=5
4XESTACKTRACE at jeus_jspwork._500_thread_5fmw_5fjsp._jspService(_500_thread_5fmw_5fjsp.java(Compiled Code))
4XESTACKTRACE at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
4XESTACKTRACE at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:213)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:140)
4XESTACKTRACE at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:251)
3XHNATIVESTACK Native Stack
NULL ------------
3XHSTACKLINE at 0x38EC9E24 in
3XHSTACKLINE at 0xD012316C in _event_wait
3XHSTACKLINE at 0xD012E9DC in _cond_wait_local
3XHSTACKLINE at 0xD012EEB0 in _cond_wait
3XHSTACKLINE at 0xD012F874 in pthread_cond_timedwait
3XHSTACKLINE at 0xD22A6A10 in condvarTimedWaitUpTo248Days
3XHSTACKLINE at 0xD22A6BA0 in condvarTimedWait
3XHSTACKLINE at 0xD22A5988 in sysMonitorWait
3XHSTACKLINE at 0xD21604F4 in lkMonitorEnter
3XHSTACKLINE at 0xD2318F08 in _jit_monitorEnterQuicker
3XHSTACKLINE at 0xD2509220 in JITSigSegvHandler
3XHSTACKLINE at 0x353396E4 in
3XHSTACKLINE at 0x353396E4 in
3XMTHREADINFO "http1-w1" (TID:0x3031E150, sys_thread_t:0x38726F28, state:R, native ID:0x383B) prio=5
4XESTACKTRACE at jeus_jspwork._500_thread_5fmw_5fjsp._jspService(_500_thread_5fmw_5fjsp.java(Compiled Code))
4XESTACKTRACE at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
4XESTACKTRACE at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
4XESTACKTRACE at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:251)
3XHNATIVESTACK Native Stack
NULL ------------
3XHSTACKLINE at 0x38E45390 in
3XMTHREADINFO "http1-w0 [container1-13]" (TID:0x3031BDD0, sys_thread_t:0x38726928, state:CW, native ID:0x373A) prio=5
4XESTACKTRACE at jeus_jspwork._500_thread_5fmw_5fjsp._jspService(_500_thread_5fmw_5fjsp.java(Compiled Code))
4XESTACKTRACE at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
4XESTACKTRACE at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:213)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:140)
4XESTACKTRACE at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:251)
3XHNATIVESTACK Native Stack
NULL ------------
3XHSTACKLINE at 0x38D43804 in
3XHSTACKLINE at 0xD012316C in _event_wait
3XHSTACKLINE at 0xD012E9DC in _cond_wait_local
3XHSTACKLINE at 0xD012EEB0 in _cond_wait
3XHSTACKLINE at 0xD012F874 in pthread_cond_timedwait
3XHSTACKLINE at 0xD22A6A10 in condvarTimedWaitUpTo248Days
3XHSTACKLINE at 0xD22A6BA0 in condvarTimedWait
3XHSTACKLINE at 0xD22A5988 in sysMonitorWait
3XHSTACKLINE at 0xD21604F4 in lkMonitorEnter
3XHSTACKLINE at 0xD2318F08 in _jit_monitorEnterQuicker
3XHSTACKLINE at 0xD2509220 in JITSigSegvHandler
3XHSTACKLINE at 0x353396E4 in
3XHSTACKLINE at 0x353396E4 in
▶결과설명: 첫번째 Thread인 w1는동기화블록진입후‘state:R’상태가되었고, w2과 w0은 Monitor에대한 Lock을기다리면서, ‘state:CW’로변하였다.
■Condition Wait 상태
조건대기상태로도표현되는 CW는, 흔히 Thread가동기화블록안에있거나, 혹은 Thread.sleep, object.wait()상태에머물면서 event를기다리는상황에서감지가된다.
"http1-w2" prio=10 tid=0x000000010140f2c0 nid=0x3b runnable [0xffffffff578fe000..0xffffffff578ff928]
at jeus_jspwork._600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:76)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w1" prio=10 tid=0x0000000100aa7680 nid=0x3a in Object.wait() [0xffffffff57afe000..0xffffffff57aff8a8]
at java.lang.Object.wait(Native Method)
- waiting on <0xffffffff7211db78> (a java.lang.Object)
at jeus_jspwork._600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:69)
- locked <0xffffffff7211db78> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w0 [container1-13]" prio=10 tid=0x0000000101196f40 nid=0x39 in Object.wait() [0xffffffff57cfe000..0xfffffff
f57cff828]
at java.lang.Object.wait(Native Method)
- waiting on <0xffffffff7211db78> (a java.lang.Object)
at jeus_jspwork._600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:69)
- locked <0xffffffff7211db78> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w2" prio=3 tid=60000000024ffc40 nid=60 lwp_id=1583373 runnable [9fffffff786ff000..9fffffff78700a40]
at jeus_jspwork._600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:76)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w1" prio=10 tid=60000000024bc480 nid=59 lwp_id=1583372 in Object.wait() [9fffffff78900000..9fffffff78900ac0
]
at java.lang.Object.wait(Native Method)
- waiting on <9fffffffb86c5a20> (a java.lang.Object)
at jeus_jspwork._600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:69)
- locked <9fffffffb86c5a20> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w0 [container1-13]" prio=10 tid=60000000024b6180 nid=58 lwp_id=1583371 in Object.wait() [9fffffff78b00000..
9fffffff78b00d40]
at java.lang.Object.wait(Native Method)
- waiting on <9fffffffb86c5a20> (a java.lang.Object)
at jeus_jspwork._600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:69)
- locked <9fffffffb86c5a20> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
▶결과설명: 역시 SunOS플랫폼의결과와유사하게나타난다.
[AIX / JDK 1.5]
lThread 실행순서 : w2 à w1 à w0
lDump 내용
3XMTHREADINFO "http1-w0 [container1-15]" (TID:0x0000000114B88000, sys_thread_t:0x00000001147E06D0, state:CW, native ID:0x000000
00003230B3) prio=5
4XESTACKTRACE at jeus_jspwork/_600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:75)
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/engine/ServletWrapper.execute(ServletWrapper.java:220)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.execute(JspServletWrapper.java:139)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
3XMTHREADINFO "http1-w1 [container1-14]" (TID:0x0000000114C76E00, sys_thread_t:0x0000000114B88F30, state:CW, native ID:0x000000
00003DD0E7) prio=5 4XESTACKTRACE at java/lang/Object.wait(Native Method)
4XESTACKTRACE at java/lang/Object.wait(Object.java:231)
4XESTACKTRACE at jeus_jspwork/_600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:68)
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/engine/ServletWrapper.execute(ServletWrapper.java:220)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.execute(JspServletWrapper.java:139)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
3XMTHREADINFO "http1-w2 [container1-13]" (TID:0x0000000114C7B600, sys_thread_t:0x0000000114B89410, state:CW, native ID:0x000000
00003E00DB) prio=5 4XESTACKTRACE at java/lang/Object.wait(Native Method)
4XESTACKTRACE at java/lang/Object.wait(Object.java:231)
4XESTACKTRACE at jeus_jspwork/_600_thread_5fcw_5fjsp._jspService(_600_thread_5fcw_5fjsp.java:68)
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/servlets/JspServlet.execute(JspServlet.java:359)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w1" prio=10 tid=0x00000001003d1cc0 nid=0x3a waiting for monitor entry [0xffffffff57afe000..0xffffffff57aff6
28] at jeus_jspwork._600_thread_5fdeadlock_5fjsp._jspService(_600_thread_5fdeadlock_5fjsp.java:70)
- waiting to lock <0xffffffff71857638> (a java.lang.Object)
- locked <0xffffffff71857628> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w0 [container1-13]" prio=10 tid=0x00000001003d1950 nid=0x39 waiting for monitor entry [0xffffffff57cfe000..
0xffffffff57cff6a8]
at jeus_jspwork._600_thread_5fdeadlock_5fjsp._jspService(_600_thread_5fdeadlock_5fjsp.java:77)
- waiting to lock <0xffffffff71857628> (a java.lang.Object)
- locked <0xffffffff71857638> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
▶결과설명: 각각의 Thread는, for문안에서서로의객체에대한 Monitor를기다리면서동기화블록안으로진입을대기하고있음으로,‘waiting for monitor entry’로표시된다.
Stack 정보에는, 해당 Thread가‘0xffffffff71857638’와‘0xffffffff71857628’를Locked하고있는정보를볼수있다.
[HP-UX]
"http1-w2 [container1-15]" prio=10 tid=60000000024ffc40 nid=60 lwp_id=1583373 waiting for monitor entry [9fffffff7
8700000..9fffffff78700a40]
at jeus_jspwork._600_thread_5fdeadlock_5fjsp._jspService(_600_thread_5fdeadlock_5fjsp.java:77)
- waiting to lock <9fffffffb8cde050> (a java.lang.Object)
- locked <9fffffffb8cde060> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
"http1-w1 [container1-16]" prio=10 tid=60000000024bc480 nid=59 lwp_id=1583372 waiting for monitor entry [9fffffff7
8900000..9fffffff78900ac0]
at jeus_jspwork._600_thread_5fdeadlock_5fjsp._jspService(_600_thread_5fdeadlock_5fjsp.java:70)
- waiting to lock <9fffffffb8cde060> (a java.lang.Object)
- locked <9fffffffb8cde050> (a java.lang.Object)
at jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:220)
at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:139)
at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:265)
▶결과설명: SunOS와거의유사한패턴을보이고있다.
[AIX / JDK 1.5]
lThread 실행순서 : w1 à w2 à w0
lDump 내용
3XMTHREADINFO "http1-w0 [container1-13]" (TID:0x0000000114A07100, sys_thread_t:0x00000001147764F0, state:B, native ID:0x0000000
000372005) prio=5
4XESTACKTRACE at jeus_jspwork/_600_thread_5fdeadlock_5fjsp._jspService(_600_thread_5fdeadlock_5fjsp.java:76)
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/servlets/JspServlet.execute(JspServlet.java:359)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
3XMTHREADINFO "http1-w1 [container1-14]" (TID:0x0000000114A15C00, sys_thread_t:0x0000000114A11350, state:B, native ID:0x0000000
0003D00BD) prio=5
4XESTACKTRACE at jeus_jspwork/_600_thread_5fdeadlock_5fjsp._jspService(_600_thread_5fdeadlock_5fjsp.java:69(Compiled Code))
4XESTACKTRACE at jeus/servlet/jsp2/runtime/HttpJspBase.service(HttpJspBase.java:106)
4XESTACKTRACE at javax/servlet/http/HttpServlet.service(HttpServlet.java:818)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus/servlet/engine/ServletWrapper.execute(ServletWrapper.java:220)
4XESTACKTRACE at jeus/servlet/jsp/JspServletWrapper.execute(JspServletWrapper.java:139)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:265)
3XMTHREADINFO "http1-w2" (TID:0x0000000114C6C300, sys_thread_t:0x0000000114A11830, state:P, native ID:0x000000000008B031) prio=
5
4XESTACKTRACE at sun/misc/Unsafe.park(Native Method)
4XESTACKTRACE at java/util/concurrent/locks/LockSupport.park(LockSupport.java:169)
4XESTACKTRACE at java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.jav
a:1793)
4XESTACKTRACE at java/util/concurrent/LinkedBlockingQueue.take(LinkedBlockingQueue.java:379)
4XESTACKTRACE at jeus/servlet/util/StandardQueue.get(StandardQueue.java:53)
4XESTACKTRACE at jeus/servlet/engine/ThreadPoolManager.getConnection(ThreadPoolManager.java:332)
4XESTACKTRACE at jeus/servlet/engine/HttpRequestProcessor.run(HttpRequestProcessor.java:95)
▶결과설명: java.util.concurrent 관련한클래스들이작동하고있는모습이보인다.
이경우, Dump Header 부분에서아래와같은메시지가같이출력된다.
1LKDEADLOCK Deadlock detected !!!
NULL ---------------------
NULL
2LKDEADLOCKTHR Thread "http1-w0 [container1-13]" (0x0000000114A07100)
3LKDEADLOCKWTR is waiting for:
4LKDEADLOCKMON sys_mon_t:0x0000000112E0C9E0 infl_mon_t: 0x0000000112E0CA30:
4LKDEADLOCKOBJ java/lang/Object@0700000002309EF8/0700000002309F10:
3LKDEADLOCKOWN which is owned by:
2LKDEADLOCKTHR Thread "http1-w1 [container1-14]" (0x0000000114A15C00)
3LKDEADLOCKWTR which is waiting for:
4LKDEADLOCKMON sys_mon_t:0x000000011498DA00 infl_mon_t: 0x000000011498DA50:
4LKDEADLOCKOBJ java/lang/Object@0700000002309F10/0700000002309F28:
3LKDEADLOCKOWN which is owned by:
2LKDEADLOCKTHR Thread "http1-w0 [container1-13]" (0x0000000114A07100)
[AIX / JDK 1.4]
lThread 실행순서 : w1 à w2 à w0
lDump 내용
3XMTHREADINFO "http1-w1" (TID:0x304F7768, sys_thread_t:0x38E21528, state:CW, native ID:0x383B) prio=5
4XESTACKTRACE at jeus_jspwork._500_thread_5fdeadlock_5fjsp._jspService(_500_thread_5fdeadlock_5fjsp.java(Compiled Code))
4XESTACKTRACE at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
4XESTACKTRACE at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus.servlet.engine.ServletWrapper.execute(ServletWrapper.java:213)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:140)
4XESTACKTRACE at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:251)
3XHNATIVESTACK Native Stack
NULL ------------
3XHSTACKLINE at 0x38EE6804 in
3XHSTACKLINE at 0xD012316C in _event_wait
3XHSTACKLINE at 0xD012E9DC in _cond_wait_local
3XHSTACKLINE at 0xD012EEB0 in _cond_wait
3XHSTACKLINE at 0xD012F874 in pthread_cond_timedwait
3XHSTACKLINE at 0xD22A6A10 in condvarTimedWaitUpTo248Days
3XHSTACKLINE at 0xD22A6BA0 in condvarTimedWait
3XHSTACKLINE at 0xD22A5988 in sysMonitorWait
3XHSTACKLINE at 0xD21604F4 in lkMonitorEnter
3XHSTACKLINE at 0xD2318F08 in _jit_monitorEnterQuicker
3XHSTACKLINE at 0xD2509220 in JITSigSegvHandler
3XHSTACKLINE at 0x35339254 in
3XHSTACKLINE at 0x35339254 in
3XMTHREADINFO "http1-w0" (TID:0x304C93B0, sys_thread_t:0x38E20F28, state:MW, native ID:0x373A) prio=5
4XESTACKTRACE at jeus_jspwork._500_thread_5fdeadlock_5fjsp._jspService(_500_thread_5fdeadlock_5fjsp.java(Compiled Code))
4XESTACKTRACE at jeus.servlet.jsp.HttpJspBase.service(HttpJspBase.java:53)
4XESTACKTRACE at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
4XESTACKTRACE at jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:94)
4XESTACKTRACE at jeus.servlet.servlets.JspServlet.execute(JspServlet.java:359)
4XESTACKTRACE at jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:251)
3XHNATIVESTACK Native Stack
NULL ------------
3XHSTACKLINE at 0xD230F26C in release_m_block
3XHSTACKLINE at 0xD011D4A4 in _mutex_lock
3XHSTACKLINE at 0xD22A66E4 in cooperative_mutex_lock
3XHSTACKLINE at 0xD22A6334 in sysMonitorEnter
3XHSTACKLINE at 0xD21604F4 in lkMonitorEnter
3XHSTACKLINE at 0xD2318F08 in _jit_monitorEnterQuicker
3XHSTACKLINE at 0xD2509220 in JITSigSegvHandler
3XHSTACKLINE at 0x35339254 in