A Tale That Wasn't Left

양철웅의, 특별히 주제를 정해두지 않은 이야기들

RSS

Missing libSegFault.so
Posted on Tuesday, October 1, 2024.

https://sourceware.org/pipermail/glibc-cvs/2022q1/076117.html

SEGFAULT_SIGNALS="all" LD_PRELOAD=/usr/lib/libSetFault.so prog

위와 같이 프로그램을 실행시키고 해당 프로세스 장애시 로그에 백트레이스를 기록하는 용도로 많이 사용했었던 glibc의 libSegFault가 단종(deprecate)되었다.

ubuntu:~$ whereis libSegFault.so
libSegFault.so:

The deprecation commit에서 추천한것은 (1) sigsegv gnulib module (2) libsegfault 두 가지인데 모두 소스코드의 수정이 필요한 방식이기에 항상 적용가능하지는 않다.

찾아보니 우분투에는 glibc-tools에 libSegFault.so가 살아있었다.

ubuntu:~$ apt install glibc-tools

ubuntu:~$ whereis libSegFault.so
libSegFault.so: /usr/lib/x86_64-linux-gnu/libSegFault.so

Backtrace:
./powerplant(+0x606)[0x55d2ad5e1606]
./powerplant(+0x628)[0x55d2ad5e1628]
./powerplant(+0x639)[0x55d2ad5e1639]
/usr/lib/libc.so.6(__libc_start_main+0xea)[0x7f9852ec6f6a]
./powerplant(+0x51a)[0x55d2ad5e151a]

$ addr2line -e ./powerplant -a 0x606
    0x0000000000000606
    /tmp/segfault/main.c:3

Categories: devel
Tags: devel, diary, debug