Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 618494 - media-libs/gstreamer-1.14.1: app-emulation/spice configure blocks while "checking for the appsrc GStreamer element..." when old media-libs/gst-plugins-bad-1.12.4 is installed
Summary: media-libs/gstreamer-1.14.1: app-emulation/spice configure blocks while "chec...
Status: CONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: GStreamer package maintainers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-05-15 06:16 UTC by Mirko Guenther
Modified: 2018-08-30 17:12 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mirko Guenther 2017-05-15 06:16:28 UTC
when try to emerge 'app-emulation/spice-0.13.3-r1' the configure script blocks on 'checking for the appsrc GStreamer element...'
It's only happens the running the emerge process.

'ebuild app-emulation/spice-0.13.3-r1 configure' with my standard user or running the configure script as root in '/var/tmp/portage/app-emulation/spice-0.13.3-r1/work' works fine.

running 'ebuild app-emulation/spice-0.13.3-r1 configure' as user portage blocks.
Comment 1 Mirko Guenther 2017-05-15 06:17:15 UTC
Portage 2.3.5 (python 3.4.5-final-0, default/linux/amd64/13.0, gcc-5.4.0, glibc-2.23-r3, 4.10.14-gentoo x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-4.10.14-gentoo-x86_64-Intel-R-_Core-TM-_i5-6300HQ_CPU_@_2.30GHz-with-gentoo-2.3
KiB Mem:    16189504 total,  13488604 free
KiB Swap:   17104892 total,  17104892 free
Timestamp of repository gentoo: Fri, 12 May 2017 10:22:11 +0000
sh bash 4.3_p48-r1
ld GNU ld (Gentoo 2.26.1 p1.0) 2.26.1
app-shells/bash:          4.3_p48-r1::gentoo
dev-java/java-config:     2.2.0-r3::gentoo
dev-lang/perl:            5.24.1-r1::gentoo
dev-lang/python:          2.7.12::gentoo, 3.4.5::gentoo
dev-util/cmake:           3.7.2::gentoo
dev-util/pkgconfig:       0.28-r2::gentoo
sys-apps/baselayout:      2.3::gentoo
sys-apps/openrc:          0.24.2::gentoo
sys-apps/sandbox:         2.10-r3::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69::gentoo
sys-devel/automake:       1.11.6-r1::gentoo, 1.12.6::gentoo, 1.14.1::gentoo, 1.15-r2::gentoo
sys-devel/binutils:       2.26.1::gentoo
sys-devel/gcc:            4.9.3::gentoo, 5.4.0-r3::gentoo
sys-devel/gcc-config:     1.7.3::gentoo
sys-devel/libtool:        2.4.6-r3::gentoo
sys-devel/make:           4.2.1::gentoo
sys-kernel/linux-headers: 4.4::gentoo (virtual/os-headers)
sys-libs/glibc:           2.23-r3::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: git
    sync-uri: https://github.com/gentoo-mirror/gentoo
    priority: -1000

unity-gentoo
    location: /home/mirgu/git/unity-gentoo
    masters: gentoo
    priority: 0

mirgu
    location: /home/mirgu/git/gentoo_mirgu
    masters: gentoo
    priority: 1

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=native -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps=y"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://de-mirror.org/gentoo/"
LANG="de_DE.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl acpi alsa amd64 ayatana bash-completion battery berkdb bluetooth branding bzip2 cairo cdda cdr cli colord corefonts cracklib crypt cryptsetup cups cxx dbus device-mapper dhcpcd dri dts dvd dvdr eds egl emboss encode evo exif fam firefox flac fortran gdb gdbm gif git glamor gnome gnome-keyring gnome-online-accounts gpm gstreamer gtk gtk3 iconv introspection ipv6 jpeg lcms ldap libnotify libsecret lm_sensors mad mng modules mp3 mp4 mpeg mpi mtp multilib nautilus ncurses networkmanager nls nptl ntpl ogg opengl openmp pam pango pcre pdf plymouth png policykit ppds pulseaudio qml qt3support qt5 readline samba sdl seccomp session spell ssl startup-notification subversion svg systemd tcpd threads tiff truetype type3 udev udisks unicode upower usb uxa vaapi vala vdpau vorbis wifi wxwidgets x264 xattr xcb xinerama xml xv xvid xvmc zeitgeist zlib" ABI_X86="32 64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" CURL_SSL="openssl" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="libinput synaptics" KERNEL="linux" L10N="de en en-GB" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="de en" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6" PYTHON_SINGLE_TARGET="python3_4" PYTHON_TARGETS="python2_7 python3_4" RUBY_TARGETS="ruby21 ruby22" USERLAND="GNU" VIDEO_CARDS="intel i965" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

=================================================================
                        Package Settings
=================================================================

app-emulation/spice-0.12.7-r1::gentoo was built with the following:
USE="(-libressl) -sasl -smartcard -static-libs" ABI_X86="64"
Comment 2 Mirko Guenther 2017-05-15 06:21:04 UTC
running "gst-inspect-1.0 appsrc" as user 'portage' show following output:
No protocol specified
Failed to connect to Mir: Failed to connect to server socket: Datei oder Verzeichnis nicht gefunden

(gst-plugin-scanner:22030): Clutter-CRITICAL **: Unable to initialize Clutter: Gdk konnte nicht initialisiert werden

(gst-plugin-scanner:22030): GLib-GObject-WARNING **: cannot register existing type 'GstSdpSrc'

(gst-plugin-scanner:22030): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:22030): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:22030): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed
No protocol specified
No protocol specified
Factory Details:
  Rank                     none (0)
  Long-name                AppSrc
  Klass                    Generic/Source
  Description              Allow the application to feed buffers to a pipeline
  Author                   David Schleef <ds@schleef.org>, Wim Taymans <wim.taymans@gmail.com>

Plugin Details:
  Name                     app
  Description              Elements used to communicate with applications
  Filename                 /usr/lib64/gstreamer-1.0/libgstapp.so
  Version                  1.10.3
  License                  LGPL
  Source module            gst-plugins-base
  Source release date      2017-01-30
  Binary package           Gentoo GStreamer ebuild
  Origin URL               https://www.gentoo.org

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----GstAppSrc

Implementierte Schnittstellen:
  GstURIHandler

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      ANY


Element Flags:
  no flags set

Element Implementation:
  Has change_state() function: gst_base_src_change_state

Element has no clocking capabilities.

URI handling capabilities:
  Element can act as source.
  Supported URI protocols:
    appsrc

Pads:
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  name                : The name of the object
                        flags: lesbar, schreibbar
                        String. Default: "appsrc0"
  parent              : The parent of the object
                        flags: lesbar, schreibbar
                        Object of type "GstObject"
  blocksize           : Size in bytes to read per buffer (-1 = default)
                        flags: lesbar, schreibbar
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
  num-buffers         : Number of buffers to output before sending EOS (-1 = unlimited)
                        flags: lesbar, schreibbar
                        Integer. Range: -1 - 2147483647 Default: -1 
  typefind            : Run typefind before negotiating
                        flags: lesbar, schreibbar
                        Boolean. Default: false
  do-timestamp        : Apply current stream time to buffers
                        flags: lesbar, schreibbar
                        Boolean. Default: false
  caps                : The allowed caps for the src pad
                        flags: lesbar, schreibbar
                        Caps (NULL)
  size                : The size of the data stream in bytes (-1 if unknown)
                        flags: lesbar, schreibbar
                        Integer64. Range: -1 - 9223372036854775807 Default: -1 
  stream-type         : the type of the stream
                        flags: lesbar, schreibbar
                        Enum "GstAppStreamType" Default: 0, "stream"
                           (0): stream           - GST_APP_STREAM_TYPE_STREAM
                           (1): seekable         - GST_APP_STREAM_TYPE_SEEKABLE
                           (2): random-access    - GST_APP_STREAM_TYPE_RANDOM_ACCESS
  max-bytes           : The maximum number of bytes to queue internally (0 = unlimited)
                        flags: lesbar, schreibbar
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 200000 
  format              : The format of the segment events and seek
                        flags: lesbar, schreibbar
                        Enum "GstFormat" Default: 2, "bytes"
                           (0): undefined        - GST_FORMAT_UNDEFINED
                           (1): default          - GST_FORMAT_DEFAULT
                           (2): bytes            - GST_FORMAT_BYTES
                           (3): time             - GST_FORMAT_TIME
                           (4): buffers          - GST_FORMAT_BUFFERS
                           (5): percent          - GST_FORMAT_PERCENT
  block               : Block push-buffer when max-bytes are queued
                        flags: lesbar, schreibbar
                        Boolean. Default: false
  is-live             : Whether to act as a live source
                        flags: lesbar, schreibbar
                        Boolean. Default: false
  min-latency         : The minimum latency (-1 = default)
                        flags: lesbar, schreibbar
                        Integer64. Range: -1 - 9223372036854775807 Default: -1 
  max-latency         : The maximum latency (-1 = unlimited)
                        flags: lesbar, schreibbar
                        Integer64. Range: -1 - 9223372036854775807 Default: -1 
  emit-signals        : Emit need-data, enough-data and seek-data signals
                        flags: lesbar, schreibbar
                        Boolean. Default: true
  min-percent         : Emit need-data when queued bytes drops below this percent of max-bytes
                        flags: lesbar, schreibbar
                        Unsigned Integer. Range: 0 - 100 Default: 0 
  current-level-bytes : The number of currently queued bytes
                        flags: lesbar
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  duration            : The duration of the data stream in nanoseconds (GST_CLOCK_TIME_NONE if unknown)
                        flags: lesbar, schreibbar
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 18446744073709551615 

Element Signals:
  "need-data" :  void user_function (GstElement* object,
                                     guint arg0,
                                     gpointer user_data);
  "enough-data" :  void user_function (GstElement* object,
                                       gpointer user_data);
  "seek-data" :  gboolean user_function (GstElement* object,
                                         guint64 arg0,
                                         gpointer user_data);

Element Actions:
  "push-buffer" :  GstFlowReturn user_function (GstElement* object,
                                                GstBuffer* arg0);
  "push-sample" :  GstFlowReturn user_function (GstElement* object,
                                                GstSample* arg0);
  "end-of-stream" :  GstFlowReturn user_function (GstElement* object);


*When export DISPLAY=:0 the configure script works*
Comment 3 Matthias Maier gentoo-dev 2017-07-12 03:31:45 UTC
Was $DISPLAY set to an invalid value?

I cannot reproduce when compiling in a stage-3 (without unset DISPLAY variable).
Comment 4 Michael Haubenwallner (RETIRED) gentoo-dev 2018-08-28 07:19:41 UTC
Same here in an "emerge --emptytree" on amd64 while at
>>> Emerging (1216 of 1354) app-emulation/spice-0.14.0-r2::gentoo
to be updated from 0.14.0-r1, having
USE="gstreamer -libressl -lz4 -sasl -smartcard -static-libs"

media-libs/gst* packages updated right before were (from 1.12.4):
>>> Emerging (1082 of 1354) media-libs/gstreamer-1.14.1::gentoo
>>> Installing (1082 of 1354) media-libs/gstreamer-1.14.1::gentoo
>>> Emerging (1211 of 1354) media-libs/gst-plugins-base-1.14.1::gentoo
>>> Installing (1211 of 1354) media-libs/gst-plugins-base-1.14.1::gentoo
>>> Emerging (1215 of 1354) media-libs/gst-plugins-good-1.14.1::gentoo
>>> Installing (1215 of 1354) media-libs/gst-plugins-good-1.14.1::gentoo

AFAICS, the processes involved are:

UID        PID  PPID  C STIME TTY          TIME CMD
root      6551 31136  0 Aug27 pts/5    00:08:59 /usr/bin/python3.5 -b /usr/lib/python-exec/python3.5/emerge -qe @system @world

portage    480  6551  0 00:24 pts/5    00:00:00 [app-emulation/spice-0.14.0-r2] sandbox /dev/shm/portage/._portage_reinstall_.rmm4jbm1/bin/ebuild.sh configure
portage    481   480  0 00:24 pts/5    00:00:00 /bin/bash /dev/shm/portage/._portage_reinstall_.rmm4jbm1/bin/ebuild.sh configure
portage    498   481  0 00:24 pts/5    00:00:00 /bin/bash /dev/shm/portage/._portage_reinstall_.rmm4jbm1/bin/ebuild.sh configure
portage    578   498  0 00:24 pts/5    00:00:00 /bin/sh ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --disable-silent-rules --docdir=/usr/share/doc/spice-0.14.0-r2 --htmldir=/usr/share/doc/spice-0.14.0-r2/html --libdir=/usr/lib64 --disable-static --disable-lz4 --without-sasl --disable-smartcard --enable-gstreamer=1.0 --disable-celt051
portage   1557   578  0 00:24 pts/5    00:00:00 /usr/bin/gst-inspect-1.0 appsrc
portage   1558  1557  0 00:24 pts/5    00:00:00 /usr/lib64/gstreamer-1.0/gst-plugin-scanner -l /usr/bin/gst-inspect-1.0

It turns out that it is gst-plugin-scanner waiting for some mutex, and that '/usr/bin/gst-inspect-1.0 appsrc' does run the 'gst-plugin-scanner' only if "~/.cache/gstreamer-1.0/registry.x86_64.bin" is missing - as it is the case for 'portage' user.

When I remove my own ~/.cache/gstreamer-1.0/, gst-inspect-1.0 does hang as well.

I'm going to kill that now to finish my "emerge --emptytree @world" - let's see if I can reproduce once rebooted.
Comment 5 Michael Haubenwallner (RETIRED) gentoo-dev 2018-08-28 07:32:53 UTC
(In reply to Michael Haubenwallner from comment #4)
> media-libs/gst* packages updated right before were (from 1.12.4):
> >>> Emerging (1082 of 1354) media-libs/gstreamer-1.14.1::gentoo
> >>> Installing (1082 of 1354) media-libs/gstreamer-1.14.1::gentoo
> >>> Emerging (1211 of 1354) media-libs/gst-plugins-base-1.14.1::gentoo
> >>> Installing (1211 of 1354) media-libs/gst-plugins-base-1.14.1::gentoo
> >>> Emerging (1215 of 1354) media-libs/gst-plugins-good-1.14.1::gentoo
> >>> Installing (1215 of 1354) media-libs/gst-plugins-good-1.14.1::gentoo

Note that media-libs/gst-plugins-bad-1.12.4 update to 1.14.1 is still pending, scheduled after app-emulation/spice in 'emerge --resume'.
Comment 6 Michael Haubenwallner (RETIRED) gentoo-dev 2018-08-28 11:58:48 UTC
Now since media-libs/gst-plugins-bad-1.14.1 is updated things do work again.

I'd wonder if there's a way in RDEPEND, to get media-libs/gst-plugins-bad updated along media-libs/gstreamer before packages (not depending on media-libs/gst-plugins-bad) subsequently are merged during a larger world update.
Comment 7 Mart Raudsepp gentoo-dev 2018-08-28 13:13:44 UTC
Are you sure this isn't just coincidence, with the freezing being random and it just didn't happen randomly after you got -bad upgraded, but could happen again after a couple tries?
Comment 8 Michael Haubenwallner (RETIRED) gentoo-dev 2018-08-30 17:12:38 UTC
Doesn't seem so.
I've reproduced the hang by replaying the gstreamer upgrade path (from 1.12.4 to 1.14.1) seen during my world upgrade:

$ emerge -C gstreamer gst-plugins-bad gst-plugins-base gst-plugins-good gst-plugins-gtk
$ emerge -1 '~gstreamer-1.12.4' '~gst-plugins-bad-1.12.4' '~gst-plugins-base-1.12.4' '~gst-plugins-good-1.12.4'

$ rm -rf ~/.cache/gstreamer-1.0 ; gst-inspect-1.0 appsrc
PASS

root$ emerge -pv1 spice gst-plugins-bad
[ebuild     U  ] media-libs/gstreamer-1.14.1:1.0::gentoo [1.12.4:1.0::gentoo]
[ebuild     U  ] media-libs/gst-plugins-base-1.14.1:1.0::gentoo [1.12.4:1.0::gentoo]
[ebuild   R    ] app-emulation/spice-0.14.0-r2::gentoo
[ebuild     U  ] media-libs/gst-plugins-good-1.14.1:1.0::gentoo [1.12.4:1.0::gentoo]
[ebuild  N     ] media-plugins/gst-plugins-gtk-1.14.1:1.0::gentoo
[ebuild     U  ] media-libs/gst-plugins-bad-1.14.1-r1:1.0::gentoo [1.12.4:1.0::gentoo]
[blocks b      ] <media-libs/gst-plugins-bad-1.13.1:1.0 ("<media-libs/gst-plugins-bad-1.13.1:1.0" is blocking media-plugins/gst-plugins-gtk-1.14.1, media-libs/gstreamer-1.14.1, media-libs/gst-plugins-base-1.14.1)

Here, app-emulation/spice would be merged before gst-plugins-good, but in my world-emptytree update the order was:
>>> Emerging (1082 of 1354) media-libs/gstreamer-1.14.1::gentoo
>>> Installing (1082 of 1354) media-libs/gstreamer-1.14.1::gentoo
>>> Emerging (1211 of 1354) media-libs/gst-plugins-base-1.14.1::gentoo
>>> Installing (1211 of 1354) media-libs/gst-plugins-base-1.14.1::gentoo
>>> Emerging (1215 of 1354) media-libs/gst-plugins-good-1.14.1::gentoo
>>> Installing (1215 of 1354) media-libs/gst-plugins-good-1.14.1::gentoo
>>> Emerging (1216 of 1354) app-emulation/spice-0.14.0-r2::gentoo
>>> Failed to emerge app-emulation/spice-0.14.0-r2, Log file:

Ok, one by one using --nodeps: some need FEATURES=-protect-owned, as emerge won't know about subsequent unmerge of old gst-plugins-bad:

$ FEATURES=-protect-owned emerge -1 --nodeps gstreamer
$ rm -rf ~/.cache/gstreamer-1.0 ; gst-inspect-1.0 appsrc
GOOD

$ FEATURES=-protect-owned emerge -1 gst-plugins-base --nodeps
$ rm -rf ~/.cache/gstreamer-1.0 ; gst-inspect-1.0 appsrc
GOOD

$ emerge -1 gst-plugins-good
$ rm -rf ~/.cache/gstreamer-1.0 ; gst-inspect-1.0 appsrc
HANG

$ FEATURES=-protect-owned emerge -1 gst-plugins-gtk --nodeps
$ rm -rf ~/.cache/gstreamer-1.0 ; gst-inspect-1.0 appsrc
HANG

$ emerge -1 gst-plugins-bad
$ rm -rf ~/.cache/gstreamer-1.0 ; gst-inspect-1.0 appsrc
GOOD