GNOME Bugzilla – Bug 712283
rtpjitterbuffer: RTX unit test fails
Last modified: 2014-11-30 14:53:50 UTC
target: armhf raspberry pi (OS. raspbian) Used git branch rev 1.2 (not updated to 1.2.1). Make check test fails during debian package build for rtpjitterbuffer make elements/rtpjitterbuffer.check-norepeat fails during Running suite(s): rtpjitterbuffer ** ERROR:elements/rtpjitterbuffer.c:578:verify_rtx_event: assertion failed: (value && G_VALUE_HOLDS_UINT64 (value)) ** ERROR:elements/rtpjitterbuffer.c:578:verify_rtx_event: assertion failed: (value && G_VALUE_HOLDS_UINT64 (value)) ** ERROR:elements/rtpjitterbuffer.c:578:verify_rtx_event: assertion failed: (value && G_VALUE_HOLDS_UINT64 (value)) 72%: Checks: 11, Failures: 0, Errors: 3 elements/rtpjitterbuffer.c:914:E:general:test_rtx_expected_next:0: (after this point) Received signal 6 (Aborted) elements/rtpjitterbuffer.c:994:E:general:test_rtx_two_missing:0: (after this point) Received signal 6 (Aborted) elements/rtpjitterbuffer.c:1119:E:general:test_rtx_packet_delay:0: (after this point) Received signal 6 (Aborted) make: *** [elements/rtpjitterbuffer.check-norepeat] Erreur 3 GDB bt available below or here: http://pastebin.com/MAnEycX6 ~/src/gst-plugins-good $ G_DEBUG=fatal_warnings make -C tests/check/ elements/rtpjitterbuffer.gdb make: entrant dans le répertoire « /home/pi/src/gst-plugins-good/tests/check » GNU gdb (GDB) 7.4.1-debian Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "arm-linux-gnueabihf". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /home/pi/src/gst-plugins-good/tests/check/elements/rtpjitterbuffer...done. (gdb) run Starting program: /home/pi/src/gst-plugins-good/tests/check/elements/rtpjitterbuffer [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1". Running suite(s): rtpjitterbuffer [New Thread 0x4092c470 (LWP 31831)] [New Thread 0x40b2c470 (LWP 31832)] [Thread 0x4092c470 (LWP 31831) exited] [Thread 0x40b2c470 (LWP 31832) exited] [New Thread 0x4092c470 (LWP 31833)] [New Thread 0x40b2c470 (LWP 31834)] [Thread 0x4092c470 (LWP 31833) exited] [Thread 0x40b2c470 (LWP 31834) exited] [New Thread 0x4092c470 (LWP 31835)] [New Thread 0x40b2c470 (LWP 31836)] [Thread 0x4092c470 (LWP 31835) exited] [Thread 0x40b2c470 (LWP 31836) exited] [New Thread 0x4092c470 (LWP 31837)] [New Thread 0x40b2c470 (LWP 31838)] [Thread 0x4092c470 (LWP 31837) exited] [Thread 0x40b2c470 (LWP 31838) exited] [New Thread 0x4092c470 (LWP 31839)] [New Thread 0x40b2c470 (LWP 31840)] [Thread 0x4092c470 (LWP 31839) exited] [Thread 0x40b2c470 (LWP 31840) exited] [New Thread 0x4092c470 (LWP 31841)] [New Thread 0x40b2c470 (LWP 31842)] [Thread 0x4092c470 (LWP 31841) exited] [Thread 0x40b2c470 (LWP 31842) exited] [New Thread 0x4092c470 (LWP 31843)] [New Thread 0x40b2c470 (LWP 31844)] [Thread 0x4092c470 (LWP 31843) exited] [Thread 0x40b2c470 (LWP 31844) exited] [New Thread 0x4092c470 (LWP 31845)] [New Thread 0x40b2c470 (LWP 31846)] [Thread 0x4092c470 (LWP 31845) exited] [Thread 0x40b2c470 (LWP 31846) exited] [New Thread 0x4092c470 (LWP 31847)] [New Thread 0x40b2c470 (LWP 31848)] ** ERROR:elements/rtpjitterbuffer.c:578:verify_rtx_event: assertion failed: (value && G_VALUE_HOLDS_UINT64 (value)) Program received signal SIGABRT, Aborted. 0x4035cbfc in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:67 67 ../nptl/sysdeps/unix/sysv/linux/raise.c: Aucun fichier ou dossier de ce type. // FILE NOT FOUND VISIBLY (gdb) thread apply all bt Thread 19 (Thread 0x40b2c470 (LWP 31848)): #0 0x4031c494 in __pthread_cond_wait (cond=0x9baf8, mutex=0x9d810) at pthread_cond_wait.c:153 #1 0x402b4110 in g_cond_wait () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0 #2 0x4057a4a8 in gst_rtp_jitter_buffer_loop (jitterbuffer=0x9e030) at gstrtpjitterbuffer.c:2685 #3 0x40183a64 in ?? () from /usr/lib/libgstreamer-1.0.so.0 #4 0x40183a64 in ?? () from /usr/lib/libgstreamer-1.0.so.0 Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 18 (Thread 0x4092c470 (LWP 31847)): #0 0x4031c494 in __pthread_cond_wait (cond=0xa9f00, mutex=0x258d0) at pthread_cond_wait.c:153 #1 0x402b4110 in g_cond_wait () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0 #2 0x4006bfcc in ?? () from /usr/lib/libgstcheck-1.0.so.0 #3 0x4006bfcc in ?? () from /usr/lib/libgstcheck-1.0.so.0 Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 1 (Thread 0x40021dd0 (LWP 31828)): #0 0x4035cbfc in __GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:67 #1 0x4036097c in __GI_abort () at abort.c:92 ---Type <return> to continue, or q <return> to quit--- #2 0x4029667c in g_assertion_message () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0 #3 0x40296c20 in g_assertion_message_expr () from /lib/arm-linux-gnueabihf/libglib-2.0.so.0 #4 0x0000bbcc in verify_rtx_event (event=<optimized out>, expected_seqnum=1078311924, expected_timestamp=<optimized out>, expected_delay=20, expected_spacing=20000000) at elements/rtpjitterbuffer.c:578 #5 0x0000db24 in test_rtx_expected_next (__i__=<optimized out>) at elements/rtpjitterbuffer.c:949 #6 0x40070070 in srunner_run_all () from /usr/lib/libgstcheck-1.0.so.0 #7 0x40069afc in gst_check_run_suite () from /usr/lib/libgstcheck-1.0.so.0 #8 0x0000a3fc in main (argc=41980, argv=0x95ee8) at elements/rtpjitterbuffer.c:1286 (gdb) frame 4 #4 0x0000bbcc in verify_rtx_event (event=<optimized out>, expected_seqnum=1078311924, expected_timestamp=<optimized out>, expected_delay=20, expected_spacing=20000000) at elements/rtpjitterbuffer.c:578 578 g_assert (value && G_VALUE_HOLDS_UINT64 (value)); (gdb) print value $1 = (const GValue *) 0x0
I can reproduce this problem, I suggest we just drop this unit tests in the 1.2 branch, as we don't have the rest of the RTX features in there anyway. Any opposition?
Retransmission is supposed to be working in 1.2 with rtprtxqueue (simple, non-rfc4588-compliant implementation) and these features in rtpjitterbuffer are meant to be working. Looking at the code, I don't see why it would fail. However, this is curious:
+ Trace 232882
expected_seqnum should be 2 according to the code. Maybe there is memory corruption there?
Is this still happening in current git?
*** Bug 725700 has been marked as a duplicate of this bug. ***
This was probably fixed a long time ago, please re-open if it happens againl
Make check-valgrind produces failures in these tests quite often, but I think they're different failures. Also happens more frequently on slow/single-core machines.