After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 649297 - regression: ffdemux_ape fails with gst_ffmpegdata_open: assertion `GST_PAD_IS_SRC (pad)' failed
regression: ffdemux_ape fails with gst_ffmpegdata_open: assertion `GST_PAD_IS...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-libav
git master
Other Linux
: Normal blocker
: 0.10.12
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-05-03 16:44 UTC by Tim-Philipp Müller
Modified: 2011-06-30 19:21 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
ape file to reproduce the issue (just a few samples) (70.00 KB, application/octet-stream)
2011-05-03 16:44 UTC, Tim-Philipp Müller
Details

Description Tim-Philipp Müller 2011-05-03 16:44:20 UTC
Created attachment 187129 [details]
ape file to reproduce the issue (just a few samples)

This looks like a bug in libav, maybe already fixed upstream?

Note this in libavformat/avio.h:

#define URL_RDONLY 0  /**< read-only */
#define URL_WRONLY 1  /**< write-only */
#define URL_RDWR   2  /**< read-write */


#if LIBAVFORMAT_VERSION_MAJOR < 53
#define AVIO_RDONLY 0  /**< read-only */
#define AVIO_WRONLY 1  /**< write-only */
#define AVIO_RDWR   2  /**< read-write */
#else
#define AVIO_RDONLY 1  /**< read-only */
#define AVIO_WRONLY 2  /**< write-only */
#define AVIO_RDWR   4  /**< read-write */
#endif

and then in libavformat/aviobuf.c the AVIO_* flags are silently passed to ffurl_open() which I presume expects URL_* flags, which used to be identical but apparently aren't any more.

int avio_open(AVIOContext **s, const char *filename, int flags)
{
    ...
    err = ffurl_open(&h, filename, flags);
    ...
}
Comment 1 Tim-Philipp Müller 2011-05-03 16:45:49 UTC
Stack trace:

** CRITICAL **: gst_ffmpegdata_open: assertion `GST_PAD_IS_SRC (pad)' failed
aborting...

Program received signal SIGABRT, Aborted.

Thread 140737257182976 (LWP 2902)

  • #0 raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #1 abort
    at abort.c line 92
  • #2 g_logv
    at /tmp/buildd/glib2.0-2.28.4/./glib/gmessages.c line 557
  • #3 g_log
    at /tmp/buildd/glib2.0-2.28.4/./glib/gmessages.c line 577
  • #4 gst_ffmpegdata_open
    at gstffmpegprotocol.c line 81
  • #5 ffurl_connect
    at libavformat/avio.c line 154
  • #6 ffurl_open
    at libavformat/avio.c line 279
  • #7 avio_open
    at libavformat/aviobuf.c line 948
  • #8 av_open_input_file
    at libavformat/utils.c line 635
  • #9 gst_ffmpegdemux_open
    at gstffmpegdemux.c line 1172
  • #10 gst_ffmpegdemux_loop
    at gstffmpegdemux.c line 1354
  • #11 gst_task_func
    at gsttask.c line 318
  • #12 g_thread_pool_thread_proxy
    at /tmp/buildd/glib2.0-2.28.4/./glib/gthreadpool.c line 319
  • #13 g_thread_create_proxy
    at /tmp/buildd/glib2.0-2.28.4/./glib/gthread.c line 1897
  • #14 start_thread
    at pthread_create.c line 300
  • #15 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 112
  • #16 ??

The pad is a sink pad (as it should be), the sanity check is wrong because of the enum mismatch.
Comment 2 Tim-Philipp Müller 2011-05-03 17:12:57 UTC
Even easier way to reproduce the issue: make check  ;)
Comment 3 Edward Hervey 2011-06-30 19:21:50 UTC
No longer present since updating to v0.7 branch of libav.