clomia/LifeGame

bprin 리부팅을 실행할 때 심각한 쓰레드 에러

Closed this issue · 5 comments

Fatal Python error: _enter_buffered_busy: could not acquire lock for <_io.BufferedWriter name='<stdout>'> at interpreter shutdown, possibly due to daemon threads
Python runtime state: finalizing (tstate=000001E035193960)

Current thread 0x00003e00 (most recent call first):
<no Python frame>

연산 제공 연결이 끊기면 이 문제가 발생한다

그것도 아닌거 같다. 또한 일찍 종료했을때 문제가 발생한다

해결 <- 노션에 기록

저도 비슷한 문제 겪고있는데 해결방법 공유해주실 수 있을까요?

저도 비슷한 문제 겪고있는데 해결방법 공유해주실 수 있을까요?
@JinyoungLee115

해결법

위 에러의 경우 0x00003e00 이라는 쓰레드를 deamon=False 해주면 해결됩니다

원인

이미 종료된 쓰레드에서 코드를 실행하려 하면 위와 같은 에러가 발생합니다.

작성했던 코드에 있던 구체적인 원인

A쓰레드가 B쓰레드를 생성합니다. 근데 A쓰레드가 demon=True여서 B쓰레드를 생성한 후 강제종료됩니다.
A쓰레드는 이미 강제 종료 되었는데 A쓰레드가 B쓰레드를 조작하기 위해 코드를 실행하려 할 때 위와 같은 에러가 발생했습니다

Tip

--> 종료된 데몬쓰레드가 실행하는 코드가 있는지 확인해보세요 <--

쓰레드에 name 속성으로 이름을 지정하지 않으면 위와 같이 0x00003e00 이런식으로 이름이 지정되요
디버깅을 위해서 쓰레드에 name을 지정해주시는게 좋아요