I experience for many weeks (months?) that building perl-SDL-2.548-16.fc38 in mock environment never finishes because it hangs in t/core_video.t: ├─screen(1392)─┬─bash(1393)───bootstrapbatch(1461)───perl(4730)─┬─mock(1727008)───systemd-nspawn(1728732)───(sd-stubinit)(1728734)───rpmbuild(1728737)───sh(1734798)───Build(1734799)───perl(1735434) $ ps w 1728737 1734798 1734799 1735434 PID TTY STAT TIME COMMAND 1728737 ? Ss 0:00 /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/perl-SDL.spec 1734798 ? S 0:00 /bin/sh -e /var/tmp/rpm-tmp.mhVYe1 1734799 ? S 0:00 /usr/bin/perl ./Build test 1735434 ? t 2533:15 /usr/bin/perl t/core_video.t strace on 1735434 does not show anything. gdb shows: (gdb) bt #0 0x00007f01ba3d1f60 in SDL_FreeYUVOverlay () from target:/lib64/libSDL-1.2.so.0 #1 0x00007f01ba1d710d in XS_SDL__Overlay_DESTROY (my_perl=<optimized out>, cv=<optimized out>) at lib/SDL/Overlay.xs:87 #2 0x00007f01ba725fca in Perl_pp_entersub () from target:/lib64/libperl.so.5.36 #3 0x00007f01ba67c1d6 in Perl_call_sv () from target:/lib64/libperl.so.5.36 #4 0x00007f01ba72c063 in S_curse.lto_priv.0 () from target:/lib64/libperl.so.5.36 #5 0x00007f01ba72c7a8 in Perl_sv_clear () from target:/lib64/libperl.so.5.36 #6 0x00007f01ba72cdc2 in Perl_sv_free2 () from target:/lib64/libperl.so.5.36 #7 0x00007f01ba75e380 in Perl_leave_scope () from target:/lib64/libperl.so.5.36 #8 0x00007f01ba765215 in Perl_pp_leave () from target:/lib64/libperl.so.5.36 #9 0x00007f01ba717388 in Perl_runops_standard () from target:/lib64/libperl.so.5.36 #10 0x00007f01ba681fcd in perl_run () from target:/lib64/libperl.so.5.36 #11 0x000055ac92f3434a in main () I think a similar problem was observed in Koji on Fedora 38 mass rebuild.
It busy-waits on this line: SDL_FreeYUVOverlay (overlay12=0x55ac9480db70) at /usr/src/debug/sdl12-compat-1.2.60-2.fc38.x86_64/src/SDL12_compat.c:7535 7535 if (overlay->overlay12 == overlay12) { in this cycle: 7530 if (overlay12) { 7531 SDL_Renderer *renderer = LockVideoRenderer(); 7532 SDL12_YUVData *hwdata = (SDL12_YUVData *) overlay12->hwdata; 7533 QueuedOverlayItem *overlay = QueuedDisplayOverlays.next; 7534 while (overlay != NULL) { 7535 if (overlay->overlay12 == overlay12) { 7536 overlay->overlay12 = NULL; /* don't try to draw this later. */ 7537 } 7538 } The variables look like this: (gdb) p *overlay $4 = {overlay12 = 0x0, dstrect12 = {x = 0, y = 0, w = 100, h = 100}, next = 0x0} (gdb) p *overlay12 $5 = {format = 1448433993, w = 200, h = 220, planes = 3, pitches = 0x55ac9480dbd8, pixels = 0x0, hwfuncs = 0x1, hwdata = 0x55ac9480dba8, hw_overlay = 1, UnusedBits = 0} It looks like a logic bug in the code: "overlay" variable is never nulled in that cycle, thus the cycle never terminates. Maybe it should have been of a register storage and updated by a different thread/process.
a/register storage/volatile storage/
Plain "perl -Iblib/{lib,arch} t/core_video.t" without an X server also hangs.
This is triggered by upgrading sdl12-compat from 1.2.52 to 1.2.56.
I confirm the upstream test fixes this problem. If you don't have time, I can apply the patch to the Fedora sdl12-compat package.
s/test/patch/
FEDORA-2023-c29ef60a0d has been submitted as an update to Fedora 39. https://bodhi.fedoraproject.org/updates/FEDORA-2023-c29ef60a0d
FEDORA-2023-c29ef60a0d has been pushed to the Fedora 39 stable repository. If problem still persists, please make note of it in this bug report.
FEDORA-2023-1a3cea1a37 has been submitted as an update to Fedora 38. https://bodhi.fedoraproject.org/updates/FEDORA-2023-1a3cea1a37
FEDORA-2023-1a3cea1a37 has been pushed to the Fedora 38 stable repository. If problem still persists, please make note of it in this bug report.