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)
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
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님 덕분에 많이 배운 것 같습니다. 컨트리뷰톤 기간이 끝나도 시간 날 때마다 계속 기여해보고 싶습니다.