dmesg
내 창 관리자(xfwm4, XFCE의 일부)가 다음과 같이 충돌하는 경우 :
xfwm4[3936]: segfault at 7f3c7c523770 ip 00007f3c7c523770 sp 00007ffffea1ee28 error 15 in SYSV00000000 (deleted)[7f3c7c4e8000+60000]
다른 곳에서도 동일한 상황이 SYSV00000000
발생합니다(예 lsof
: ). 그래서, 이것은 무엇입니까 SYSV00000000
? 구글링을 해보니 가상 메모리와 관련이 있는 것으로 나타났는데 그 외에는 별로 많지 않았습니다.
답변1
커널은 segfault가 발생하면 명령 포인터가 0x7f3c7c523770
SysV IPC shm 세그먼트에 있음을 알려줍니다. 공유 메모리 세그먼트는 0x7f3c7c4e8000
바이트 0x60000
길이로 시작됩니다.
SysV shm 세그먼트는 파일에서 지원되지 않으므로 이 문자열은 SYSV00000000
일반적으로 세그먼트화된 실행 파일 또는 라이브러리의 파일 이름을 가져오는 위치에 나타납니다. 따라서 이 로그 줄은 실제로 유용한 정보를 제공하지 않습니다. 충돌 원인을 추적하려면 코어 덤프가 필요합니다.
지시 포인터가 전혀 없어야한다고 생각합니다. 실행 가능한 코드를 SysV shm 세그먼트에 로드하는 것은 다소 이상합니다. 하지만 XFCE 코드를 본 적이 없으므로 이상하게 보이는 것은 아마도 정상일 것입니다.
메모리 관리의 기본 사항을 잘 이해하고 있다는 가정 하에 다음 매뉴얼 페이지를 읽으면 sysv shm에 대한 기본 사항을 배울 수 있습니다.
man svipc
man shmget
man shmat
ipcs
명령을 실행하여 현재 할당된 sysv ipc 리소스를 확인합니다. ipcs -m
목록을 공유 메모리 세그먼트로만 제한하십시오.