Bug ID 1031890
Summary GStreamer regression, multifilesink writes no longer atomic
Classification openSUSE
Product openSUSE Distribution
Version Leap 42.2
Hardware x86-64
OS openSUSE 42.2
Status NEW
Severity Major
Priority P5 - None
Component Other
Assignee bnc-team-screening@forge.provo.novell.com
Reporter pafee@tycoint.com
QA Contact qa-bugs@suse.de
Found By ---
Blocker ---

User-Agent:       Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:52.0)
Gecko/20100101 Firefox/52.0
Build Identifier: 

Leap 42.1 comes with GStreamer 1.2, Leap 42.2 with GStreamer 1.8.

A regression in upstream GStreamer means that 1.8 has a bug that's not present
in 1.2 (and has since been fixed in 1.10).

https://bugzilla.gnome.org/show_bug.cgi?id=766990

The multifilesink element can output video as a collection of files.  Atomic
writes are important so that consumers of these files never see files that are
empty or partially written.

The bug means that applications that rely the multifilesink element can work as
expected on Leap 42.1 but break on 42.2.

Reproducible: Always

Steps to Reproduce:
1. Use strace to watch how the multifilesink element writes to files.
strace -fe open,close,rename gst-launch-1.0 -v videotestsrc ! multifilesink
2. The desired behaviour is to write to a temporary file, then rename it
(atomic operation) to the final destination.

[pid 27743] open("00417.ROOIXY", O_RDWR|O_CREAT|O_EXCL, 0666) = 11
[pid 27743] close(11)                   = 0
[pid 27743] rename("00417.ROOIXY", "00417") = 0


3.GStreamer 1.8 writes directly to the final file, without a rename, exposing
consumers to partially written or zero sized files.

[pid  7439] open("00501", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 11
[pid  7439] close(11)                   = 0
[pid  7439] open("00502", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 11
[pid  7439] close(11)                   = 0




The multimedia:libs repo on OBS has GStreamer 1.10, which fixes this issue.

Upstream bug report: https://bugzilla.gnome.org/show_bug.cgi?id=766990
Upstream fix:
https://github.com/GStreamer/gst-plugins-good/commit/023998dd76b449440d267d689d578ae3e7a1bdbd

The same problem exists with SLES12.  SP1 (GStreamer 1.2) works, SP2 (GStreamer
1.8) has this bug.


You are receiving this mail because: