"Bad system call." parsing playlist files in Flatpak
Using the totem Flatpak from totem!154 (merged), I get a crash in the extract. I don't know whether the problem is the nightly platform, glib, Flatpak's seccomp or something else.
Core was generated by `/app/libexec/tracker-extract-3 --domain-ontology /app/share/tracker3/domain-ont'.
Program terminated with signal SIGSYS, Bad system call.
warning: Unexpected size of section `.reg-xstate/16' in core file.
#0 statx (fd=fd@entry=9, path=path@entry=0x7f3591dcc197 "", flags=flags@entry=4096, mask=mask@entry=1, buf=buf@entry=0x7f35674a9b20) at ../sysdeps/unix/sysv/linux/statx.c:29
29 int ret = INLINE_SYSCALL_CALL (statx, fd, path, flags, mask, buf);
[Current thread is 1 (Thread 0x7f35674aa700 (LWP 16))]
(gdb) bt
#0 statx (fd=fd@entry=9, path=path@entry=0x7f3591dcc197 "", flags=flags@entry=4096, mask=mask@entry=1, buf=buf@entry=0x7f35674a9b20) at ../sysdeps/unix/sysv/linux/statx.c:29
#1 0x00007f3591d99930 in g_local_file_statx (mask_required=G_LOCAL_FILE_STAT_FIELD_TYPE, stat_buf=0x7f35674a9b20, mask=G_LOCAL_FILE_STAT_FIELD_TYPE, flags=4096, pathname=0x7f3591dcc197 "", dirfd=9)
at ../gio/glocalfileinfo.h:109
#2 g_local_file_fstat
(stat_buf=0x7f35674a9b20, mask_required=(G_LOCAL_FILE_STAT_FIELD_TYPE | G_LOCAL_FILE_STAT_FIELD_MODE | G_LOCAL_FILE_STAT_FIELD_NLINK | G_LOCAL_FILE_STAT_FIELD_UID | G_LOCAL_FILE_STAT_FIELD_GID | G_LOCAL_FILE_STAT_FIELD_ATIME | G_LOCAL_FILE_STAT_FIELD_MTIME | G_LOCAL_FILE_STAT_FIELD_CTIME | G_LOCAL_FILE_STAT_FIELD_INO | G_LOCAL_FILE_STAT_FIELD_SIZE | G_LOCAL_FILE_STAT_FIELD_BLOCKS | G_LOCAL_FILE_STAT_FIELD_BTIME), mask=G_LOCAL_FILE_STAT_FIELD_TYPE, fd=9) at ../gio/glocalfileinfo.h:109
#3 g_local_file_read (file=0x558abd425120, cancellable=<optimized out>, error=0x0) at ../gio/glocalfile.c:1355
#4 0x00007f3591ccab33 in g_file_load_contents
(file=file@entry=0x558abd425120, cancellable=cancellable@entry=0x0, contents=contents@entry=0x7f35674a9cc8, length=length@entry=0x7f35674a9cd0, etag_out=etag_out@entry=0x0, error=error@entry=0x0)
at ../gio/gfile.c:7061
#5 0x00007f35842196bc in totem_pl_parser_add_pls (parser=0x558abd425080 [TotemPlParser], file=0x558abd425120, base_file=0x558abd425140, parse_data=0x7f35674a9d90, data=<optimized out>)
at ../plparse/totem-pl-parser-pls.c:336
#6 0x00007f3584213829 in totem_pl_parser_parse_internal (parser=0x558abd425080 [TotemPlParser], file=0x558abd425120, base_file=0x558abd425140, parse_data=0x7f35674a9d90) at ../plparse/totem-pl-parser.c:2102
#7 0x00007f3584214478 in totem_pl_parser_parse_with_base
(parser=parser@entry=0x558abd425080 [TotemPlParser], uri=uri@entry=0x7f3548001210 "file:///home/hadess/test.pls", base=base@entry=0x0, fallback=fallback@entry=0) at ../plparse/totem-pl-parser.c:2292
#8 0x00007f35842146ad in totem_pl_parser_parse (parser=parser@entry=0x558abd425080 [TotemPlParser], uri=uri@entry=0x7f3548001210 "file:///home/hadess/test.pls", fallback=fallback@entry=0)
at ../plparse/totem-pl-parser.c:2371
#9 0x00007f358472465e in tracker_extract_get_metadata (info=0x7f358001cd00) at ../src/tracker-extract/tracker-extract-playlist.c:144
#10 0x0000558abb38f46c in get_file_metadata (task=task@entry=0x558abd2c4f20, info_out=info_out@entry=0x7f35674a9e60) at ../src/tracker-extract/tracker-extract.c:306
#11 0x0000558abb38fb64 in get_metadata (task=0x558abd2c4f20) at ../src/tracker-extract/tracker-extract.c:424
#12 0x0000558abb38fc58 in single_thread_get_metadata (queue=0x558abd426fb0) at ../src/tracker-extract/tracker-extract.c:510
#13 0x00007f3591ec4fa1 in g_thread_proxy (data=0x558abd3eb300) at ../glib/gthread.c:820
#14 0x00007f3591b554d2 in start_thread (arg=<optimized out>) at pthread_create.c:477
#15 0x00007f3591a814d3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) frame 4
#4 0x00007f3591ccab33 in g_file_load_contents (file=file@entry=0x558abd425120, cancellable=cancellable@entry=0x0, contents=contents@entry=0x7f35674a9cc8, length=length@entry=0x7f35674a9cd0,
etag_out=etag_out@entry=0x0, error=error@entry=0x0) at ../gio/gfile.c:7061
7061 in = g_file_read (file, cancellable, error);
(gdb) frame 0
#0 statx (fd=fd@entry=9, path=path@entry=0x7f3591dcc197 "", flags=flags@entry=4096, mask=mask@entry=1, buf=buf@entry=0x7f35674a9b20) at ../sysdeps/unix/sysv/linux/statx.c:29
29 int ret = INLINE_SYSCALL_CALL (statx, fd, path, flags, mask, buf);
(gdb) list
24 int
25 statx (int fd, const char *path, int flags,
26 unsigned int mask, struct statx *buf)
27 {
28 #ifdef __NR_statx
29 int ret = INLINE_SYSCALL_CALL (statx, fd, path, flags, mask, buf);
30 # ifdef __ASSUME_STATX
31 return ret;
32 # else
33 if (ret == 0 || errno != ENOSYS)
Running tracker-extract3
directly on the file from inside the sandbox works.