Bug 31279 - abidiff crashes while analyzing libgstqsv.so 1.22.8
Summary: abidiff crashes while analyzing libgstqsv.so 1.22.8
Status: RESOLVED FIXED
Alias: None
Product: libabigail
Classification: Unclassified
Component: default (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Dodji Seketeli
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-01-23 11:51 UTC by bbhtt
Modified: 2024-01-26 10:37 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed: 2024-01-24 00:00:00


Attachments
New library 1.22.8 (140.60 KB, application/x-sharedlib)
2024-01-23 11:51 UTC, bbhtt
Details
New library debug file (991.21 KB, application/x-sharedlib)
2024-01-23 11:52 UTC, bbhtt
Details
libgstqsv 1.22.5 (140.59 KB, application/x-sharedlib)
2024-01-23 11:53 UTC, bbhtt
Details
libgstqsv 1.22.5 debug file (991.30 KB, application/x-sharedlib)
2024-01-23 11:53 UTC, bbhtt
Details
1.22.5 (237.21 KB, application/x-troff-man)
2024-01-24 12:12 UTC, bbhtt
Details
1.22.8 (237.61 KB, application/x-troff-man)
2024-01-24 12:12 UTC, bbhtt
Details

Note You need to log in before you can comment on or make changes to this bug.
Description bbhtt 2024-01-23 11:51:53 UTC
Created attachment 15320 [details]
New library 1.22.8

```
abidiff: ../../src/abg-dwarf-reader.cc:13213: abigail::ir::class_decl_sptr abigail::dwarf::add_or_update_class_type(reader&, Dwarf_Die*, abigail::ir::scope_decl*, bool, abigail::ir::class_decl_sptr, bool, size_t, bool): Assertion `__abg_cond__' failed.
```

See https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/16781#note_1737390894


I provided, below, the so and debug files for libgstqsv (old and new). Otherwise, the project can be built by cloning the repo and checking out the branch.

Buildstream 2 needs to be installed, see https://buildstream.build/install.html

Then `bst build components/gstreamer-plugins-bad.bst` will build the component that provides the library and `bst artifact checkout components/gstreamer-plugins-bad.bst` will produce a local copy of the build contents.

To analyse the ABI `make check-abi` can be run, that effectively runs the following, through a python script:

python script args: `check-abi --new /new-image --old /old-image --archive-on-core --forward-compatible --suppressions "/usr/share/check-abi/check-abi-suppressions.json" --abidiff-suppressions "/usr/share/check-abi/abidiff-suppressions.ini"`

abidiff args: `abidiff --headers-dir1 /old-image/usr/include --headers-dir2 /new-image/usr/include --debug-info-dir1 /old-image/usr/lib/debug --debug-info-dir2 /new-image/usr/lib/debug /old-image/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstqsv.so /new-image/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstqsv.so --drop-private-types`

Output can be seen by entering `l`:

```
┌─────────────────────────┐
│ ABI Break: libgstqsv.so │
└─────────────────────────┘

abidiff: ../../src/abg-dwarf-reader.cc:13213: abigail::ir::class_decl_sptr abigail::dwarf::add_or_update_class_type(reader&, Dwarf_Die*, abigail::ir::scope_decl*, bool, abigail::ir::class_decl_sptr, bool, size_t, bool): Assertion `__abg_cond__' failed.

abidiff core dumped, command was:
abidiff --headers-dir1 /old-image/usr/include --headers-dir2 /new-image/usr/include --debug-info-dir1 /old-image/usr/lib/debug --debug-info-dir2 /new-image/usr/lib/debug /old-image/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstqsv.so /new-image/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstqsv.so --drop-private-types
Skipping file libpipewire-module-vban-send.so
Skipping file libpipewire-module-protocol-native.so
Skipping file libpipewire-module-rt.so
```
Comment 1 bbhtt 2024-01-23 11:52:39 UTC
Created attachment 15321 [details]
New library debug file
Comment 2 bbhtt 2024-01-23 11:53:07 UTC
Created attachment 15322 [details]
libgstqsv 1.22.5
Comment 3 bbhtt 2024-01-23 11:53:32 UTC
Created attachment 15323 [details]
libgstqsv 1.22.5 debug file
Comment 4 Dodji Seketeli 2024-01-24 11:04:19 UTC
Hello,

Thank you for reporting this problem.

I have tried to reproduce it, but I think there are two missing debug info files that should be located at ../../../../dwz/components/gstreamer-plugins-bad.bst/x86_64-unknown-linux-gnu.

These debug info files are produced by the DWARF compression tool named "dwz".  You should have one such file for each of the libgstqv.so file you provided.

Could you please provide these missing debuginfo files too, so that I can reproduce and hopefully debug the problem?

Thank you in advance and sorry for the inconvenience.
Comment 5 bbhtt 2024-01-24 12:12:05 UTC
Created attachment 15330 [details]
1.22.5
Comment 6 bbhtt 2024-01-24 12:12:26 UTC
Created attachment 15331 [details]
1.22.8
Comment 7 bbhtt 2024-01-24 12:12:55 UTC
Uploaded, thanks for looking into it.
Comment 8 Dodji Seketeli 2024-01-25 23:36:57 UTC
Branch https://sourceware.org/git/?p=libabigail.git;a=shortlog;h=refs/heads/users/dodji/PR31279 should have a tentative patch that should hopefully fix the issue.  I am currently testing it.
Comment 9 Dodji Seketeli 2024-01-26 10:37:42 UTC
The commit https://sourceware.org/git/?p=libabigail.git;a=commit;h=1053262eee8e5af9814b060aa67e56a0bcadbee5 on the master branch should fix this issue.  The fix should be available in libabigail 2.5.

Thanks for reporting this problem and sorry for the inconvenience.