What's Changed
Bug Fixes
- Intercept
pclose(#698).pcloseis now in the exported symbol list, so thepopen/pclosepair is intercepted as a unit. Fixes thehardened_popen_after_unsetenvtest on FreeBSD. - Report nested
exec*on musl / s390x (#705). Bear now intercepts musl's__execvpe, so commands launched by a nestedexecare captured on musl-based systems (observed on linux/s390x). - Do not lose the last compile on collector shutdown (#704). The TCP collector now drains its backlog on shutdown instead of racing the final event, so the last compilation is no longer dropped (observed on linux/s390x).
- Use
shinstead ofbash(#703). Build and test scripting no longer assumesbash; the project targets POSIXsh. This unblocks environments wherebashis absent.
Internal Refactoring
- Drop the
bashdependency project-wide: test fixtures, the Dockerfile pipe, the coverage check, and documentation code fences all moved frombashto POSIXsh. - Refresh workspace dependency constraints for the release. Each declared floor stays at-or-below what Fedora rawhide ships, so packagers need no substitution patches:
clap/clap_complete4.5 -> 4.6,tempfile3.19 -> 3.27,assert_cmd2.0 -> 2.2 (dev-dep), andserde-saphyr0.0.24 -> 0.0.27 (upstream patch fixes; the crate is not packaged in Fedora).instais deliberately held at 1.46 because rawhide does not yet carry 1.47. - Bump the devcontainer base image to Fedora 44.
- Add regression guards for precompiled-header source recognition (#601),
--appendperformance on large databases (#532), and non-UTF-8 argv interception (#506). - Issue/PR tooling: add
labels.ymlas the source of truth for labels, convert the bug report to a structured issue form, disable blank issues, and link Discussions from the issue picker.
Documentation
- Document the libsandbox env-clear preload conflict as a known limitation (#699, #675). When Bear's suite runs inside a sandbox (e.g. Gentoo's emerge),
libsandbox.sostrips Bear's library fromLD_PRELOADafter anenv -i, so the env-clear tests are not intercepted. This is not a Bear defect; the packaging-side fix isRESTRICT="test"orFEATURES="-sandbox -usersandbox". - New requirement proposals:
@fileresponse-file inlining (#701), an events file as an external interchange format (#644), and C++20 module recognition (#637). - Spell out the three-place sync required when adding a new intercept in
intercept-preload.
Closed Issues
- #705 - LD_PRELOAD does not report nested exec* on musl linux/s390x
- #704 - source_directory_filter_config loses last compile on linux/s390x (TCP collector shutdown race)
- #702 - ld.so: object '/usr/$LIB/bear/libexec.so' from LD_PRELOAD cannot be preloaded
- #699 - some tests are failing (documented as a sandbox/libsandbox limitation, not a Bear defect)
Thanks
- @aokblast for #698 and #703
- @rtmongold for reporting #704 and #705
- @DarthGandalf for reporting #699
- @duanjianbo3330 for reporting #702
Full Changelog: 4.1.3...4.1.4