kosslab-kr / uftrace

Function (graph) tracer for user-space
https://uftrace.github.io/slide/
GNU General Public License v2.0
16 stars 0 forks source link

[19' 이병곤] 최종보고서 #91

Open binkoni opened 5 years ago

binkoni commented 5 years ago

Learning

https://uftrace.github.io/slide uftrace 튜토리얼 슬라이드

https://github.com/kosslab-kr/uftrace/issues/89 컨트리뷰션 시작을 위한 레퍼런스

https://github.com/kosslab-kr/uftrace/issues/87 uftrace 이해에 도움이 되는 자료들

https://github.com/kosslab-kr/uftrace/issues/90 uftrace 분석에 도움이 되는 자료들


address sanitizer를 이용한 메모리 버그 찾기

많은 리뷰를 받음으로서 적절한 내용의 commit message를 작성하는 법을 배움

Closed pull requests

959

asciicast

argp-standalone을 추가하고 수정해서 안드로이드와 같이 argp 함수를 지원하지 않는 환경에서도 uftrace를 사용 가능하게끔 수정 -> 아쉽게도 maintainer가 argp-standalone 보다 getopt(_long) 방식을 선호하여 closed.

961

set follow-fork-mode child set follow-exec-mode new 가 포함된 .gdbinit을 추가해 편리하게 디버깅 하고자 함

namhyung#981 gnu c 확장인 versionsort를 지원하지 않을 경우 해결 -> 현재로서는 versionsort가 한 군데의 소스코드에만 쓰이기 때문에 versionsort를 대체할 수 있는 generic한 function을 구현하는 것 보다 현재 소스코드에만 적용가능한 함수를 새로 만드는 것을 선호.

Merged pull requests

879

configure에서 운영체제가 리눅스가 아닐 경우를 감지하지 못함 -> configure에서 운영체제가 리눅스가 아닐 경우 종료하는 코드 추가

887

다양한 배포판에서 uftrace를 테스트 하기 힘듦 -> Dockerfile을 추가하여 다양한 배포판에서 uftrace 테스트 가능

947

misc/install-deps.sh 에서 alpine과 manjaro 미지원 -> misc/install-deps.sh 코드를 수정하여 alpine 리눅스와 manjaro 리눅스의 의존성도 설치하게끔 수정

960

valgrind로 uftrace를 실행시켜보다가 메모리 누수 발견 -> utils/auto-args.c 에서 발생하는 메모리 누수 해결

967

안드로이드에서 빌드할 때의 컴파일 경고 및 에러 해결 -> 안드로이드의 libc인 bionic과 컴파일러인 gcc-clang에 의해 발생하는 컴파일 경고 및 에러 해결.

968

termux에서는 gcc-clang을 사용하는데 기본적으로 gcc 보다 많은 경고를 출력해준다 -> libdw가 존재하지 않을 경우에 발생하는 컴파일러 경고 해결

982

live replay를 할 때 xstrdup을 하기 이전에 free를 하지 않음으로 인해 메모리 누수가 생긴다 -> 코드 수정 후 해결

987

fread() 관련 merge된 코드에서 프로그램이 제대로 동작하지 않는 심각한 문제점을 발견 -> ferror()를 이용해 실제로 에러가 발생했는지 검사하여 해결

974

/tmp 디렉토리에 접근이 불가능한 경우 uftrace.data/tmp 디렉토리를 대신 사용하게끔 수정

866

luajit을 이용해 lua5.1 스크립트를 실행할 수 있는 기능 추가 -> 이 pull request로 통해 이제 uftrace는 python2 뿐만 아니라 luajit 스크립트도 실행할 수 있게 됨

Pending pull requests

973

posix shared memory 함수를 지원하지 않는 환경의 경우 일반 파일 입출력을 사용하게끔 수정 -> 파일 입출력 대신 ashmem과 sysV shm을 사용하게끔 수정예정

1002

.travis.yml 에서 install-deps.sh를 이용해 의존성을 설치하도록 수정 -> install-deps.sh가 오동작 할 경우 미리 감지할 수 있음

1004

uftrace-script.md에 luajit에 관한 내용 추가

Result

버그들 수정 마이너한 기능들 추가(안드로이드 빌드를 위한 준비 변경) 메이저한 기능 추가(luajit)

uftrace 멘티들 중에서 추가한 코드 줄 수 1위 달성

Feelings

단독 오픈소스 활동을 주로 하던 저에게 꼼꼼한 코드 리뷰와 올바른 커밋 메세지 작성에 대해 조언을 주신 멘토님들과 maintainer님 덕분에 많이 배운 것 같습니다. 컨트리뷰톤 기간이 끝나도 시간 날 때마다 계속 기여해보고 싶습니다.