Decodebin preroll does not complete when the first packet of a selected stream is located more than 2 megabytes into a container.
When attempting to play some .ogv video files, produced by a ffmpeg trans-coder, decodebin never finishes prerolling and the application hangs. This is because decodebin is configured to preroll 2MB of data from a container file before finishing.
However, if the demuxer doesn't output a buffer for at-least one of the selected streams during this process, gstreamer doesn't complete this step. This can be confirmed by either increasing the prerolling amount for decodebin, compressing the video stream more, causing the the first audio packet to land within the first 2MB, or only selecting one of the two streams. In all of these cases gstreamer plays the file correctly.
Attached is one such problematic video, I've reproduced the bug with gst123 and gst-launch: