JVM이 나에게 말한다 스레드에 의해 잠겨 있음을 보여줍니다"1 교착 상태 발견"하지만 추적은 교착 상태가 발생했음을
Found one Java-level deadlock:
=============================
"TP-Processor107":
waiting for ownable synchronizer 0x00002aaaf58e70f0, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
which is held by "indexTrackerThread3"
"indexTrackerThread3":
waiting for ownable synchronizer 0x00002aaaf4394580, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
which is held by "TP-Processor16"
"TP-Processor16":
waiting for ownable synchronizer 0x00002aaaf58e70f0, (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),
which is held by "indexTrackerThread3"
우리는 indexTrackerThread3
는 TP-Processor16
가 보유한 리소스를 기다리고 있음을 볼 수 있으며, 그 -versa. 그것은 정말로 교착 상태입니다.
우리는 볼 수 indexTrackerThread3
0x00002aaaf4394580
을 기다리고 있습니다 :
"indexTrackerThread3":
- parking to wait for <0x00002aaaf4394580>
내 질문 :the threads dump에서
, 왜 더 라인 - locked <0x00002aaaf4394580>
이 없기를?
0x00002aaaf58e70f0이 실제로 모든 스레드에 의해 잠겨 있지 않은 것처럼 보입니다. 무엇이 그것을 잠글 수 있습니까?
모든 다른 - parking to wait for <0x123>
줄마다 항상 - locked <0x123>
줄이 있습니다 (example)의 모든 교착 상태 문서에서. 그래서 나는 JVM 버그를 의심하기 시작한다. 내가 뭔가를 오해하고 있니?
참고 : pastebin에 연결하는 것은 죄송합니다.하지만 전체 덤프가 필요하지 않은 질문은 답할 수 없습니다. 간결함을 위해 "at"가 포함 된 모든 행을 제거했지만 잠금 정보는 포함하지 않았습니다.
링크를 제공해 주셔서 감사합니다. 나는 이제 Unsafe 클래스에 익숙해졌다. Unsafe.park에 대한 호출을 통해 수행하는 경우에도, 여전히 잠금은 자바 호출에서 온다, 그래서 왜'<0x123> '부분은 그 줄에서 쓸 수없는 잠긴 것? 나는 존재하지 않는 이슈의 특정 이슈에 대해 이야기하는 문서를 읽어 주시면 감사하겠습니다. –