치춘짱베리굿나이스

필로소퍼가 쏘아올린 작은 💩 (업데이트중) 본문

글/일기

필로소퍼가 쏘아올린 작은 💩 (업데이트중)

치춘 2021. 9. 4. 18:09

1. 힙 버퍼 오버플로우

구조체 메모리 할당할때 sizeof(자료형이름) 이 아니라 sizeof(변수이름) 으로 적는 바람에 포인터 크기만큼만 할당됨

바본가?

 

2. 혼자노는 철학자

스레드 생성할때 인덱스 ++ 안해줌

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

3. 메모리 해제하고 재사용

죽었는지 체크 변수나 철학자 인원수, 철학자 지속시간 등을 다 한 구조체에 몰아넣었는데

해당 구조체 메모리 해제하고 다시 접근해서 터짐ㅋㅋ

 

4. 데드락

성김이랑 홀짝 나누기 관련해서 그렇게 얘기해놓고선 그거 안해줘서 예쁘게 데드락 걸림

성게가 힌트 줘서 바로 고쳤다 성게 이즈 갓 오늘부터 성게 방향으로 매일 3번씩 절합니다

 

5. 시간역행

아마 스레드 2가 시간만 저장한 상태에서 컨텍스트 스위칭이 일어나는바람에.. 이렇게된듯..

대체 ㅋㅋㅋㅋ 이건 어케고치지..

 

6. 횟수를 정해줘도 무한으로 즐김

아마 출력문에 뮤텍스가 제대로 안걸렸거나 변수체킹을 지나쳐서 그런걸지도 

지금은 아마도 수정됨

 

7. 횟수 다 차서 종료되어야함에도 불구하고 한놈이 살아있음

마찬가지로 출력문에 뮤텍스 안걸어줘서 그런거였고 지금은 수정

 

8. ???

왜수정됐는지모름지금은

 

9. 세그폴트

아마도 Everyone ate 한 다음에 스레드 종료되면서 다른 스레드들도 전부 종료되어야 하는데, 스레드 실행 도중에 컨텍스트 스위칭이 이루어지면서 다른 스레드로 넘어감 -> Everyone ate 또는 # died 출력 -> 모든 메모리 정리 -> 이전에 실행되다 만 스레드가 마저 실행되다가 이미 정리된 메모리를 건드려버림 -> 세그멘테이션 오류 가 나는 게 아닌가 싶다

Everyone Ate나 누구 하나 죽었을 때 뮤텍스를 해제하지 않는 것 + 프린트함수 뮤텍스 내부에서 변수체크하는것으로 해결

Comments