gst-inspect-1.0 hangs on libgsttranscode.so / FUTEX_WAIT_PRIVATE
Brought to you by:
mnauw
Using the 'Open Video Reference Build', 'make install' for gentrans git checkout 9aec453 (master) causes gst-inspect-1.0 to hang on FUTEX_WAIT_PRIVATE (strace traces follow).
I don't have a proposed solution but a search on FUTEX_WAIT_PRIVATE errors indicates that it's a subtle but show-stopping bug.
strace -f gst-inspect-1.0
[...]
[pid 12832] stat("/packages/openvideopro/lib/gstreamer-1.0/libgsttranscode.so", <unfinished ...>
[pid 12831] read(10, <unfinished ...>
[pid 12832] <... stat resumed> {st_mode=S_IFREG|0755, st_size=380513, ...}) = 0
[pid 12831] <... read resumed> "\0\0\0\0\305\32\1\0\0\0\0\0d\373}R\0\0\0\0\0\0\0\0\2\0\0\0mula"..., 1220) = 1220
[pid 12832] rt_sigaction(SIGSEGV, {0x7f9ce985ce60, [], SA_RESTORER, 0x7f9ce92b6cb0}, {SIG_DFL, [], SA_RESTORER, 0x7f9ce92b6cb0}, 8) = 0
[pid 12832] futex(0x10f6e54, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 1 ([{fd=10, revents=POLLIN}], left {0, 999995781})
[pid 12831] read(10, "\4\0\4\177\0\0\0026\276\376\300\256", 12) = 12
[pid 12831] read(10, "\0\0\0\0\222\310\r\0\0\0\0\0\255\375}R\0\0\0\0\0\0\0\0\1\0\0\0fsrt"..., 566) = 566
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 1 ([{fd=10, revents=POLLIN}], left {0, 999995407})
[pid 12831] read(10, "\4\0\4\200\0\0\6x\276\376\300\256", 12) = 12
[pid 12831] read(10, "\0\0\0\0X\204\1\0\0\0\0\0\20\374}R\0\0\0\0\0\0\0\0\2\0\0\0colo"..., 1656) = 1656
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 1 ([{fd=10, revents=POLLIN}], left {0, 999996099})
[pid 12831] read(10, "\4\0\4\201\0\0\2\335\276\376\300\256", 12) = 12
[pid 12831] read(10, "\0\0\0\0\252\34\1\0\0\0\0\0d\373}R\0\0\0\0\0\0\0\0\1\0\0\0mono"..., 733) = 733
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 1 ([{fd=10, revents=POLLIN}], left {0, 999996817})
[pid 12831] read(10, "\4\0\4\202\0\0-g\276\376\300\256", 12) = 12
[pid 12831] read(10, "\0\0\0\0\237\355\6\0\0\0\0\0\21\374}R\0\0\0\0\0\0\0\0\17\0\0\0geom"..., 11623) = 11623
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 1 ([{fd=10, revents=POLLIN}], left {0, 999996873})
[pid 12831] read(10, "\4\0\4\203\0\0\3\332\276\376\300\256", 12) = 12
[pid 12831] read(10, "\0\0\0\0G-\1\0\0\0\0\0\22\374}R\0\0\0\0\0\0\0\0\1\0\0\0inte"..., 986) = 986
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 1 ([{fd=10, revents=POLLIN}], left {0, 999996941})
[pid 12831] read(10, "\4\0\4\204\0\0\5\221\276\376\300\256", 12) = 12
[pid 12831] read(10, "\0\0\0\0\234x\2\0\0\0\0\0\22\374}R\0\0\0\0\0\0\0\0\1\0\0\0rfbs"..., 1425) = 1425
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 0 (Timeout)
[pid 12831] ppoll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=9, events=POLLERR|POLLHUP|POLLNVAL}, {fd=10, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 3, {1, 0}, NULL, 8) = 0 (Timeout)
[...repeats continuously...]
====
strace -f gst-inspect-1.0 --gst-disable-registry-fork
[...]
stat("/packages/openvideopro/lib/gstreamer-1.0/libgsttranscode.so", {st_mode=S_IFREG|0755, st_size=380513, ...}) = 0
rt_sigaction(SIGSEGV, {0x7f1b29209e60, [], SA_RESTORER, 0x7f1b28a14cb0}, {SIG_DFL, [], SA_RESTORER, 0x7f1b28a14cb0}, 8) = 0
futex(0x169ee54, FUTEX_WAIT_PRIVATE, 1, NULL
[...hangs]
I have been trying to set up this rather specific environment, though no success so far (some problems with some downloads, and the script appears to restart rather than resume).
Maybe a backtrace might help to see if something can be tweaked. But there is nothing special in that plugin compared to any other GStreamer plugins, and the problem is pretty strange in itself (as you say).