From 4de9e157f8b9f030e087146085b4543819b07b67 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Fri, 29 Apr 2022 12:56:22 +0200 Subject: Skip failing test Te->files on mga[2-7] We added the test in commit f6d333affb60e5364bf30355869fd359da2317e8 when switching to the new API. But sadly this new test fails on older mga releases. Eg Te->files segfaults on mga3 with rpm-4.11.0.1: Stack trace when testing Te->files in RPM-0.45+: ok 32 - Running transaction justdb ok 33 - Running traverse on transaction ok 34 - Can find header in transaction *** Error in `/usr/bin/perl': free(): invalid next size (fast): 0x0000000000f9a1b0 *** Program received signal SIGSEGV, Segmentation fault. 0x00007ffff69932fb in malloc_consolidate () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff69932fb in malloc_consolidate () from /lib64/libc.so.6 #1 0x00007ffff699442d in _int_malloc () from /lib64/libc.so.6 #2 0x00007ffff699712d in calloc () from /lib64/libc.so.6 #3 0x00007ffff7de830f in _dl_new_object () from /lib64/ld-linux-x86-64.so.2 #4 0x00007ffff7de3fdc in _dl_map_object_from_fd () from /lib64/ld-linux-x86-64.so.2 #5 0x00007ffff7de5c2b in _dl_map_object () from /lib64/ld-linux-x86-64.so.2 #6 0x00007ffff7df01fc in dl_open_worker () from /lib64/ld-linux-x86-64.so.2 #7 0x00007ffff7dec526 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 #8 0x00007ffff7defd39 in _dl_open () from /lib64/ld-linux-x86-64.so.2 #9 0x00007ffff6a42202 in do_dlopen () from /lib64/libc.so.6 #10 0x00007ffff7dec526 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 #11 0x00007ffff6a422c4 in __libc_dlopen_mode () from /lib64/libc.so.6 #12 0x00007ffff6a1c4e5 in init () from /lib64/libc.so.6 #13 0x00007ffff6cd89f0 in pthread_once () from /lib64/libpthread.so.0 #14 0x00007ffff6a1c604 in backtrace () from /lib64/libc.so.6 #15 0x00007ffff698cea5 in __libc_message () from /lib64/libc.so.6 #16 0x00007ffff6993e66 in _int_free () from /lib64/libc.so.6 #17 0x00007ffff54354a9 in rfree () from /lib/../lib64/librpmio.so.3 #18 0x00007ffff56880e9 in rpmfiFree () from /lib/../lib64/librpm.so.3 #19 0x00007ffff56829de in rpmalFree () from /lib/../lib64/librpm.so.3 #20 0x00007ffff5691a99 in rpmtsClean () from /lib/../lib64/librpm.so.3 #21 0x00007ffff5691aec in rpmtsEmpty () from /lib/../lib64/librpm.so.3 #22 0x00007ffff5691b85 in rpmtsFree () from /lib/../lib64/librpm.so.3 #23 0x00007ffff58bd910 in XS_RPM4__Transaction_DESTROY (my_perl=, cv=) at RPM4.xs:1424 #24 0x00007ffff7b11a22 in Perl_pp_entersub () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #25 0x00007ffff7a9fc69 in Perl_call_sv () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #26 0x00007ffff7b1ae6b in S_curse () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #27 0x00007ffff7b1b808 in Perl_sv_clear () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #28 0x00007ffff7b1bbe2 in Perl_sv_free2 () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #29 0x00007ffff7b3eea0 in Perl_free_tmps () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #30 0x00007ffff7b0a835 in Perl_pp_nextstate () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #31 0x00007ffff7b0a196 in Perl_runops_standard () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #32 0x00007ffff7aa5b45 in perl_run () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #33 0x0000000000400f09 in main () Stack trace when testing Te->files in RPM-0.44: Program received signal SIGABRT, Aborted. 0x00007ffff694d6e5 in raise () from /lib64/libc.so.6 (gdb) bt #0 0x00007ffff694d6e5 in raise () from /lib64/libc.so.6 #1 0x00007ffff694ed48 in abort () from /lib64/libc.so.6 #2 0x00007ffff698ce8b in __libc_message () from /lib64/libc.so.6 #3 0x00007ffff6993e66 in _int_free () from /lib64/libc.so.6 #4 0x00007ffff54354a9 in rfree () from /lib/../lib64/librpmio.so.3 #5 0x00007ffff5688062 in rpmfiFree () from /lib/../lib64/librpm.so.3 #6 0x00007ffff56829de in rpmalFree () from /lib/../lib64/librpm.so.3 #7 0x00007ffff5691a99 in rpmtsClean () from /lib/../lib64/librpm.so.3 #8 0x00007ffff5691aec in rpmtsEmpty () from /lib/../lib64/librpm.so.3 #9 0x00007ffff5691b85 in rpmtsFree () from /lib/../lib64/librpm.so.3 #10 0x00007ffff58bd910 in XS_RPM4__Transaction_DESTROY (my_perl=, cv=) at RPM4.xs:1424 #11 0x00007ffff7b11a22 in Perl_pp_entersub () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #12 0x00007ffff7a9fc69 in Perl_call_sv () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #13 0x00007ffff7b1ae6b in S_curse () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #14 0x00007ffff7b1b808 in Perl_sv_clear () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #15 0x00007ffff7b1bbe2 in Perl_sv_free2 () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #16 0x00007ffff7b3eea0 in Perl_free_tmps () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #17 0x00007ffff7b0a835 in Perl_pp_nextstate () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #18 0x00007ffff7b0a196 in Perl_runops_standard () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #19 0x00007ffff7aa5b45 in perl_run () from /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi/CORE/libperl.so #20 0x0000000000400f09 in main () --- RPM4/NEWS | 2 +- RPM4/t/05transaction.t | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/RPM4/NEWS b/RPM4/NEWS index 92d9590..ed7c34c 100644 --- a/RPM4/NEWS +++ b/RPM4/NEWS @@ -1,5 +1,5 @@ - Adapt for rpm-4.19 -- Fix Te->file segfaulting +- Fix Te->file segfaulting (at least with rpm-4.18+) Version 0.45 - 27 April 2022 diff --git a/RPM4/t/05transaction.t b/RPM4/t/05transaction.t index 1a319b3..ffc4837 100644 --- a/RPM4/t/05transaction.t +++ b/RPM4/t/05transaction.t @@ -56,7 +56,11 @@ ok($h, "Reading the header works"); ok($ts->transadd($h, "$Bin/test-rpm-1.0-1mdk.noarch.rpm") == 0, "Adding a package to transaction works"); ok($ts->traverse_transaction(sub { ok($_[0]->fullname, "Can get name from te"); +SKIP: { +# segfault on mga[2-7], aka with rpm-4.9 & rpm-4.1[04], status is unknown for 4.15 +skip 'segfault on older rpm', 1 if `rpm --version` =~ /4\.(9|1[0-5])\./; ok($_[0]->files, "Can get files from te"); +} ok($_[0]->type, "Can get type from te"); }), "traverse_transaction works"); -- cgit v1.2.1