검색 여닫기
검색
메뉴 여닫기
518
228
4
2천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
Bad unlock balance 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
Bad unlock balance
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[분류: 디버깅]] == WARNING: bad unlock balance detected! == '''WARNING: bad unlock balance detected!'''는 Linux 커널에서 락(lock)을 사용하는 과정에서 락의 상태 관리가 올바르게 이루어지지 않았음을 나타내는 경고이다. 이는 코드의 특정 경로에서 락을 걸고 해제하는 균형(balance)이 맞지 않을 때 발생한다. === 발생 상황 === 이 경고는 다음과 같은 상황에서 발생할 수 있다: ==== 1. 락 해제 없이 코드 종료 ==== 락을 걸었지만, 코드 경로에서 락을 해제하지 않은 경우 발생한다. <syntaxhighlight lang=c> spin_lock(&my_lock); if (error_condition) { return -1; // 락을 풀지 않고 리턴 } spin_unlock(&my_lock); </syntaxhighlight> ==== 2. 중복된 락 해제 ==== 이미 해제된 락을 다시 해제하려 할 때 발생한다. <syntaxhighlight lang=c> spin_lock(&my_lock); spin_unlock(&my_lock); spin_unlock(&my_lock); // 두 번째 해제가 문제 발생 </syntaxhighlight> ==== 3. 락을 걸지 않은 상태에서 해제 시도 ==== 락을 얻지 않은 상태에서 해제를 시도할 때 발생한다. <syntaxhighlight lang=c> spin_unlock(&my_lock); // 락을 건 적이 없는데 해제 시도 </syntaxhighlight> ==== 4. 다른 컨텍스트에서 잘못된 락 관리 ==== 인터럽트 컨텍스트에서 락을 해제하거나, 재귀적으로 락을 사용하는 경우에 문제가 발생할 수 있다. 락을 얻거나 해제하는 동안 컨텍스트가 변경되었을 때 발생한다. 예를 들어, IRQ를 비활성화하는 락(`spin_lock_irqsave`)을 얻었지만, 일반 락 해제를 시도한 경우이다. <syntaxhighlight lang=c> unsigned long flags; spin_lock_irqsave(&my_lock, flags); spin_unlock(&my_lock); // 잘못된 해제 </syntaxhighlight> === 요약 === '''WARNING: bad unlock balance detected!'''는 커널 락 관리의 균형이 맞지 않을 때 발생하는 경고이다. 이는 잠재적인 데드락이나 리소스 관리 문제로 이어질 수 있으므로, 로그와 코드를 분석하여 락 사용 방식을 올바르게 수정해야 한다.
Bad unlock balance
문서로 돌아갑니다.