I’ve a verbose log with strace :
strace -o retroarch.log retroarch
But it’s very big. So I did a grep on it, and I give you the result:
grep -A 10 -B 10 flycast retroarch.log
stat("/usr/share/libretro/info/mednafen_snes_libretro.info", {st_mode=S_IFREG|0644, st_size=434, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/mednafen_snes_libretro.info”, O_RDONLY) = 12
lseek(12, 0, SEEK_SET) = 0
fstat(12, {st_mode=S_IFREG|0644, st_size=434, …}) = 0
lseek(12, 0, SEEK_SET) = 0
read(12, “display_name = “SNES / Super Fam”…, 434) = 434
lseek(12, 434, SEEK_SET) = 434
read(12, “”, 16384) = 0
close(12) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/freeintv_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/flycast_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/play_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, O_RDONLY) = 12
lseek(12, 0, SEEK_SET) = 0
fstat(12, {st_mode=S_IFREG|0644, st_size=2729, …}) = 0
lseek(12, 0, SEEK_SET) = 0
read(12, “display_name = “SNES / Super Fam”…, 2729) = 2729
lseek(12, 2729, SEEK_SET) = 2729
close(12) = 0
stat(”/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, {st_mode=S_IFREG|0644, st_size=2729, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, O_RDONLY) = 12
–
ioctl(4, DRM_IOCTL_I915_GEM_BUSY, 0x7ffdbc7b6ba0) = 0
ioctl(4, DRM_IOCTL_I915_GEM_MADVISE, 0x7ffdbc7b6c10) = 0
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\224\1\22\0\2\0\300\3\6\0\300\3\220\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"…, iov_len=72}], 1) = 72
nanosleep({tv_sec=0, tv_nsec=1000000}, NULL) = 0
stat("/usr/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=98304, …}) = 0
mkdir("/usr/lib/x86_64-linux-gnu/libretro/", 0750) = -1 EEXIST (Le fichier existe)
stat("/usr/lib/x86_64-linux-gnu/libretro/", {st_mode=S_IFDIR|0755, st_size=4096, …}) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission non accordée)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\3\0\2\0\2\0\300\3\16\0\2\0\2\0\300\3", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\331$\3\0\0\0\17\1\0\0\1\0\0\1\377\377\377\377\0\0\0\0\0\1\2\0\1\0\300\3"…, iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 76
r\ecvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="+\0\1\0", iov_len=4}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 4
I hope it will help you (and me).
But, when I read this:
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/ flycast_libretro.so.zip ”, O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 EACCES (Permission non accordée)
“Permission non accordée” means “no premission”
and when I see this:
ls -al /usr/lib/x86_64-linux-gnu/libretro/
total 23416
drwxr-xr-x 2 root root 4096 oct. 3 21:17 .
drwxr-xr-x 112 root root 98304 oct. 8 18:21 …
-rw-r–r-- 1 root root 1544568 févr. 4 2019 bsnes_mercury_accuracy_libretro.so
(…)
I think I’m going to change this:
chmod a+w /usr/lib/x86_64-linux-gnu/libretro/
Still the same problem…
The log:
strace -o retroarch2.log retroarch
grep -A 4 -B 4 flycast retroarch2.log
read(11, “display_name = “Virtual Boy (Med”…, 338) = 338
lseek(11, 338, SEEK_SET) = 338
read(11, “”, 16384) = 0
close(11) = 0
stat(”/usr/share/libretro/info/flycast_libretro.info", 0x7fffeff5aa20) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/mednafen_wswan_libretro.info”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0
–
lseek(12, 434, SEEK_SET) = 434
read(12, “”, 16384) = 0
close(12) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/freeintv_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/flycast_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/play_libretro.info”, O_RDONLY) = -1 ENOENT (Aucun fichier ou dossier de ce type)
openat(AT_FDCWD, “/usr/share/libretro/info/bsnes_mercury_balanced_libretro.info”, O_RDONLY) = 12
lseek(12, 0, SEEK_SET) = 0
fstat(12, {st_mode=S_IFREG|0644, st_size=2729, …}) = 0
–
writev(3, [{iov_base="\224\1\22\0\2\0\240\4\6\0\240\4\333\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"…, iov_len=72}], 1) = 72
stat("/usr/lib/x86_64-linux-gnu/", {st_mode=S_IFDIR|0755, st_size=98304, …}) = 0
mkdir("/usr/lib/x86_64-linux-gnu/libretro/", 0750) = -1 EEXIST (Le fichier existe)
stat("/usr/lib/x86_64-linux-gnu/libretro/", {st_mode=S_IFDIR|0777, st_size=4096, …}) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_WRONLY|O_CREAT|O_TRUNC, 0666) = 11
lseek(11, 0, SEEK_SET) = 0
fstat(11, {st_mode=S_IFREG|0644, st_size=0, …}) = 0
lseek(11, 0, SEEK_SET) = 0
lseek(11, 0, SEEK_SET) = 0
write(11, “PK\3\4\24\0\0\0\10\0,EHO\374H\271\215\271^\26\0\230mF\1\23\0\34\0fl”…, 1458176) = 1458176
write(11, “x\353\210\226D\353@\324<a\220e\16\35X\357\320\201\367h\327\0\r\236/\353\241\0035\215\332o”…, 8053) = 8053
close(11) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0
fstat(11, {st_mode=S_IFREG|0644, st_size=1466229, …}) = 0
lseek(11, 1458176, SEEK_SET) = 1458176
read(11, “x\353\210\226D\353@\324<a\220e\16\35X\357\320\201\367h\327\0\r\236/\353\241\0035\215\332o”…, 8053) = 8053
–
read(11, “display_name = “Virtual Boy (Med”…, 338) = 338
lseek(11, 338, SEEK_SET) = 338
read(11, “”, 16384) = 0
close(11) = 0
stat(”/usr/share/libretro/info/flycast_libretro.info", 0x7fffeff5b340) = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
stat("/usr/share/libretro/info/mednafen_wswan_libretro.info", {st_mode=S_IFREG|0644, st_size=379, …}) = 0
openat(AT_FDCWD, “/usr/share/libretro/info/mednafen_wswan_libretro.info”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0
–
read(11, “display_name = “SNES / Super Fam”…, 2729) = 2729
lseek(11, 2729, SEEK_SET) = 2729
read(11, “”, 16384) = 0
close(11) = 0
openat(AT_FDCWD, “/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip”, O_RDONLY) = 11
lseek(11, 0, SEEK_SET) = 0
fstat(11, {st_mode=S_IFREG|0644, st_size=1466229, …}) = 0
lseek(11, 1458176, SEEK_SET) = 1458176
read(11, “x\353\210\226D\353@\324<a\220e\16\35X\357\320\201\367h\327\0\r\236/\353\241\0035\215\332o”…, 8053) = 8053
lseek(11, 0, SEEK_SET) = 0
close(11) = 0
unlink(”/usr/lib/x86_64-linux-gnu/libretro/flycast_libretro.so.zip") = 0
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Ressource temporairement non disponible)
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{iov_base="\3\0\2\0\2\0\240\4\16\0\2\0\2\0\240\4", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
permissions problem seems to be ok but problem not solved…