asterisk crashes inside pjsip library. Referenced URL. Reproducible: Always
Hi Reuben, I'm finally catching up on all my TODO's. Can you possibly confirm you can reproduce this with pjproject compiled with USE=-debug? I already have this in the ebuild: use debug || append-cflags -DNDEBUG=1 Which *should* sort this out? And the reason for that is because NDEBUG actually affects glibc include headers too (like assert goes to a no-op), and even a #define NDEBUG 0 won't fix the issue, it needs to be undefined. Just a coupld of samples from the compile output with USE=-debug: [ebuild U ] net-libs/pjproject-2.13:0/2.13::gentoo [2.12.1-r2:0/2.12.1::gentoo] USE="alsa g729 gsm ssl -amr -debug -epoll -examples -ffmpeg -g711 -g722 -g7221 -ilbc -l16 -libyuv -openh264 -opus -portaudio -resample -sdl -silk -speex -static-libs -v4l2 -vpx -webrtc" 0 KiB ... x86_64-pc-linux-gnu-gcc -c -Wall -DPJ_AUTOCONF=1 -O2 -march=native -pipe -frecord-gcc-switches -fno-common -DNDEBUG=1 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -fPIC -O2 -march=native -pipe -frecord-gcc-switches -fno-common -DNDEBUG=1 -I../include \ -o output/pjlib-test-x86_64-pc-linux-gnu/rand.o \ ../src/pjlib-test/rand.c x86_64-pc-linux-gnu-gcc -c -Wall -DPJ_AUTOCONF=1 -O2 -march=native -pipe -frecord-gcc-switches -fno-common -DNDEBUG=1 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -fPIC -O2 -march=native -pipe -frecord-gcc-switches -fno-common -DNDEBUG=1 -I../include \ -o output/pjlib-test-x86_64-pc-linux-gnu/rbtree.o \ ../src/pjlib-test/rbtree.c x86_64-pc-linux-gnu-gcc -c -Wall -DPJ_AUTOCONF=1 -O2 -march=native -pipe -frecord-gcc-switches -fno-common -DNDEBUG=1 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -fPIC -O2 -march=native -pipe -frecord-gcc-switches -fno-common -DNDEBUG=1 -I../include \ -o output/pjlib-test-x86_64-pc-linux-gnu/select.o \ ../src/pjlib-test/select.c So I believe this should sort out your issues? I'm closing as resolved invalid since I *believe* this is caused by you setting USE=debug for pjproject ... and this is causing the problem. This really should be a bug upstream at pjproject (not asterisk) because quite frankly, an assert should be for something that should never ever happen, everything else should have required checks. The PJ_ASSERT_RETURN does have a return on production - but this precludes testing of failure-paths in calling code in debug mode ... which makes absolutely no sense to me.
Reuben has dug a bit more and found a relevant patch. Will include in 2.13-r1.
Reuben, do you mind testing the PR at https://github.com/gentoo/gentoo/pull/30088 please?
Built successfully, running and testing now. Let's leave it 24+ hours to confirm no crashes.
Confirming I have had no crashes and no instability with the 2.13-r1 pull for the past 24 hours, so I would support this now going live into portage. Thanks Jaco!
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0697e55a6fa27051a99aa59fde8b5716c022696e commit 0697e55a6fa27051a99aa59fde8b5716c022696e Author: Jaco Kroon <jaco@uls.co.za> AuthorDate: 2023-03-13 06:54:28 +0000 Commit: Joonas Niilola <juippis@gentoo.org> CommitDate: 2023-04-05 11:56:14 +0000 net-libs/pjproject: Add 2.13-r1 Bug: https://bugs.gentoo.org/887559 Closes: https://bugs.gentoo.org/888879 Signed-off-by: Jaco Kroon <jaco@uls.co.za> Closes: https://github.com/gentoo/gentoo/pull/30088 Signed-off-by: Joonas Niilola <juippis@gentoo.org> ...3537-buffer-overread-on-STUN-error-decode.patch | 95 ++++++++++++++ ...2022-23547-buffer-overread-on-STUN-decode.patch | 50 ++++++++ ...NOTIFY-tdata-is-set-before-sending-it_new.patch | 46 +++++++ net-libs/pjproject/pjproject-2.13-r1.ebuild | 142 +++++++++++++++++++++ 4 files changed, 333 insertions(+)