| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
Technically headerUnload() has been deprecated by headerExport() in
rpm-4.10, but let's keep using the old testedcode path in rpm < 4.18 but
starts using and testing the new code path in 4.18+ before
headerUnload() removal in 4.19
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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=<optimized out>, cv=<optimized out>) 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=<optimized out>, cv=<optimized out>) 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 ()
|
|
|
|
|
|
| |
Technically the old code would compile up to 4.18 but:
- rpmteFI() has been obsoleted in 4.12
- it segfaults (see next commit) whereas new code path works in 4.18
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It was recently re-enabled in commit e2c45e167796ffb6d6d5c21e0fadfec82d2d4ebf
It worked fine on mga9 but it makes several freebsd & mga[3-7] to choke
on that test
perl: rpmal.c:293: rpmalAdd: Assertion `dspool == ((void *)0) || dspool == al->pool' failed.
That assertion was removed in later rpms
The stack trace is:
Program received signal SIGABRT, Aborted.
0x00007ffff7b21a7a in raise () from /lib64/libc.so.6
(gdb) bt
#0 0x00007ffff7b21a7a in raise () from /lib64/libc.so.6
#1 0x00007ffff7b0a524 in abort () from /lib64/libc.so.6
#2 0x00007ffff7b0a40f in __assert_fail_base.cold.0 () from /lib64/libc.so.6
#3 0x00007ffff7b169a2 in __assert_fail () from /lib64/libc.so.6
#4 0x00007ffff788b682 in rpmalAdd () from /lib/../lib64/librpm.so.8
#5 0x00007ffff787c74b in rpmtsCreateAl () from /lib/../lib64/librpm.so.8
#6 0x00007ffff787d99f in rpmtsOrder () from /lib/../lib64/librpm.so.8
#7 0x00007ffff78ddde8 in XS_RPM4__Transaction_transorder (my_perl=<optimized out>, cv=<optimized out>) at RPM4.xs:1718
#8 0x00007ffff7da1b21 in Perl_pp_entersub () from /lib64/libperl.so.5.28
#9 0x00007ffff7d97e16 in Perl_runops_standard () from /lib64/libperl.so.5.28
#10 0x00007ffff7d15a17 in perl_run () from /lib64/libperl.so.5.28
#11 0x000000000040125a in main ()
|
| |
|
|
|
|
|
| |
We cannot free an rpmfi object we just wrapped into a SV
Bug introduced in commit f6d333affb60e5364bf30355869fd359da2317e8
|
|
|
|
| |
Test Te->files btw (which shows it was segfaulting before...)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
"Bug" introduced in commit 66504834514cdf96f5a366864982f0d2a0267ea2 when
introducing the same logic as in URPM
|
| |
|
| |
|
|
|
|
| |
It'll be simpler for next commits
|
| |
|
| |
|
|
|
|
|
| |
Was disabled at least since commit 9e2966a33f9148fdc8ef81783bab1fe18e87bd34
16 years ago
|
|
|
|
|
|
|
|
|
| |
Else traverse() is short-circuited... which breaks the testsuite...
I wonder how the testsuite was working previous to rpm-4.17.0 which
fixed something that exposed that issue.
This test runs smoothly on mga[2-8]
Note for future: traverse() really should be documented...
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It's OK on aarch64 & on x86_64 but it's broken on i586
eg:
$ perl -MRPM4
RPM4.c: loadable library and perl binaries are mismatched (got handshake key 0x9100080, needed 0x9180080)
Just build with the flags used to build perl itself in order to fix it
|
| |
|
|
|
|
|
|
|
| |
Was already done in commit d939d0fcd43955f367768b4a0f378e360d6bd3ce
But got dropped in commit 66504834514cdf96f5a366864982f0d2a0267ea2
when switching to ExtUtils::PkgConfig
|
| |
|
|
|
|
|
|
|
|
|
|
| |
force using a version object
rationale:
- 4.12.0.2 < 4.12.90 will wrongly pass
- v4.12.0.2 < 4.12.90 will check as we expect
Thus fixing detecting rpm version so that we do compile with rpm < 4.13
See eg: http://www.cpantesters.org/cpan/report/315efa38-85f8-11ea-adf4-f9341f24ea8f
|
| |
|
|
|
|
| |
Also alter the way we count the plan
|
|
|
|
|
|
|
|
|
|
| |
It's no more needed to list all point version unless there's a change in
them we want to test for (such as 4.12.90)
Thus fixing detecting unlisted rpm versions such as
http://www.cpantesters.org/cpan/report/1d673d18-503a-11ea-8fff-b48f1f24ea8f
where 4.13.0.1 wasn't listed and thus choked on rpm >= 4.15 code path
set by commit 9e3deaefdbc54910d58dea28d06c2678673c9d09
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
thus preventing rpm-4.1[0-2] users to choke on rpmPkgSign
|