Skip to content

SIGFPE crash in libbcg729 / bcg729Encoder with rtpengine 12.5.1 on Debian 12 #2115

@descartin

Description

@descartin

rtpengine version the issue has been seen with

Version: 12.5.1.51+0~mr12.5.1.51

Used distribution and its version

Debian 12

Linux kernel version used

6.1.0-42-amd64

CPU architecture issue was seen on (see uname -m)

x86_64

Expected behaviour you didn't see

Hello,

This may be related to #1827, but I am opening a new issue because this occurrence was seen on a newer rtpengine and OS version.

we have seen what looks like the same kind of crash previously reported in that issue, but now on a newer setup:

  • rtpengine version: 12.5.1.51+0~mr12.5.1.51

  • OS: Debian GNU/Linux 12 (bookworm)

  • Kernel: Linux 6.1.0-42-amd64

  • Architecture: x86_64

  • Hardware: Dell PowerEdge R450

  • libbcg729 packages:

    • libbcg729-0:amd64 1.1.1-2
    • libbcg729-dev:amd64 1.1.1-2

The process generated a core dump and terminated with SIGFPE:

Program terminated with signal SIGFPE, Arithmetic exception.
#0  0x00007fad67640fb2 in ?? () from /lib/x86_64-linux-gnu/libbcg729.so.0
#1  0x00007fad6763e104 in bcg729Encoder () from /lib/x86_64-linux-gnu/libbcg729.so.0
#2  0x00005583ddb21b4f in bcg729_encoder_input (enc=0x7fad3c56c7d0, frame=0x7fad5edf4f78) at ../lib/codeclib.c:3562
#3  0x00005583ddb16d05 in encoder_input_data (...) at ../lib/codeclib.c:2108
#4  0x00005583ddb1e37e in encoder_fifo_flush (...) at ../lib/codeclib.c:2149
#5  encoder_input_fifo (...) at ../lib/codeclib.c:2169
#6  0x00005583ddadd27a in __buffer_delay_frame (...) at ./daemon/codec.c:2811
#7  packet_decoded_common (...) at ./daemon/codec.c:4258
#8  0x00005583ddb1df76 in __decoder_input_data (...) at ../lib/codeclib.c:1245
#9  0x00005583ddad768a in decoder_input_data_ptime (...) at ../lib/codeclib.c:1268
#10 __rtp_decode_direct (...) at ./daemon/codec.c:4314
#11 0x00005583ddad4d4c in __handler_func_sequencer (...) at ./daemon/codec.c:2008
#12 0x00005583ddab49aa in stream_packet (...) at ./daemon/media_socket.c:2822
#13 0x00005583ddab5ff0 in __stream_fd_readable (...) at ./daemon/media_socket.c:3001
#14 0x00005583ddab6636 in stream_fd_readable (...) at ./daemon/media_socket.c:3079
#15 0x00005583ddb0e727 in poller_poll (...) at ./daemon/poller.c:240
#16 poller_loop (...) at ./daemon/poller.c:345
#17 0x00005583dda303cb in thread_detach_func (...) at ./daemon/helpers.c:264
#18 0x00007fad673f71f5 in start_thread (...) at ./nptl/pthread_create.c:442
#19 0x00007fad674778dc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

From bt full, the crash happens while processing/transcoding RTP media. Some relevant details from the crashing thread:

#2 bcg729_encoder_input (...) at ../lib/codeclib.c:3562
        len = 0 '\000'

#8 __decoder_input_data (...)
        frames = {head = 0x0, tail = 0x0, length = 0}
        ret = 0
        samples = 160

#14 stream_fd_readable (...)
        phc.s.len = 172
        payload.len = 160
        payload_type = 0
        sink.attrs.transcoding = 1
        ptime = 0

The pattern looks very similar to the previous crash reported here: SIGFPE inside libbcg729.so.0, then bcg729Encoder(), then bcg729_encoder_input() in rtpengine.

Given that this is now happening on rtpengine 12.5.1 with Debian 12 and kernel 6.1, it does not look like this can simply be attributed to an old rtpengine or old OS version.

Could you please advise whether this should be handled on the rtpengine side, for example by validating or guarding the input passed to bcg729Encoder(), or whether this should be reported upstream to the bcg729 project?

I can provide the full bt full, core details, rtpengine config, or packet/log context if needed.

Thanks a lot and regards,

David

Unexpected behaviour you saw

No response

Steps to reproduce the problem

No response

Additional program output to the terminal or logs illustrating the issue

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions