summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* diag: Try to make diagnostics signal-saferTavian Barnes2025-02-063-3/+25
| | | | Link: https://sourceware.org/bugzilla/show_bug.cgi?id=16060
* tests/posix/exec_sigmask: Make portableTavian Barnes2025-02-041-2/+14
| | | | | | | | The test was Linux-only, and didn't pass on at least mips64el due to a different signal mask size. The new version should be fully portable, but will hang forever on failure. Link: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=mips64el&ver=4.0.5-1&stamp=1737761227&raw=0
* ioq: Rewrite the spin loop to avoid a warningTavian Barnes2025-02-031-4/+3
| | | | | | | | | | | | With some GCC versions, --enable-ubsan leads to this warning: src/ioq.c: In function ‘ioq_slot_wait’: src/ioq.c:287:17: warning: ignoring loop annotation 287 | for (int j = 0; j < (1 << i); ++j) { | ^~~ presumably due to UBSan rewriting the shift to check for overflow. Work around this by precomputing the iteration count.
* ci/diag.sh: Try to make sed unbufferedTavian Barnes2025-02-031-1/+6
|
* ci/diag.sh: Simplify sed expressionTavian Barnes2025-01-271-2/+1
|
* ci: Update to NetBSD 10.1Tavian Barnes2025-01-271-1/+1
|
* build(deps): bump cross-platform-actions/action from 0.26.0 to 0.27.0dependabot[bot]2025-01-271-3/+3
| | | | | | | | | | | | | | | Bumps [cross-platform-actions/action](https://github.com/cross-platform-actions/action) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/cross-platform-actions/action/releases) - [Changelog](https://github.com/cross-platform-actions/action/blob/master/changelog.md) - [Commits](https://github.com/cross-platform-actions/action/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: cross-platform-actions/action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
* ci: Add an Arm64 Linux jobTavian Barnes2025-01-231-3/+34
|
* ci: Remove mmap_rnd_bits workaroundTavian Barnes2025-01-231-2/+0
| | | | Link: https://github.com/actions/runner-images/issues/9524#issuecomment-2002065399
* ci: Update to macos-15Tavian Barnes2025-01-231-4/+2
|
* tests/sighook: Fix Valgrind compatibilityTavian Barnes2025-01-211-39/+43
| | | | | | | | | | | | | | | | | | | | Valgrind does not deliver async signals in a timely manner; by default, it polls for new signals every 1,000 basic blocks. That means we can get SIGALRM delivered after timer_delete(), or kill(SIGSEGV) never delivered after pause(). Fix the timer_delete() issue by reordering the cleanup path. Valgrind always polls pending signals after pthread_sigmask(), so call that between timer_delete() and sigunhook(). Fix the pause() issue by sleeping in a loop instead. Note that --fair-sched=yes is required to avoid starvation of the background thread. Link: https://bugs.kde.org/show_bug.cgi?id=492678 Link: https://bugs.kde.org/show_bug.cgi?id=343357 Link: https://bugs.kde.org/show_bug.cgi?id=498936
* sighook: Fix sigreset() error handlingTavian Barnes2025-01-201-9/+16
|
* Release 4.0.54.0.5Tavian Barnes2025-01-184-4/+22
|
* tests: Add a test for sigmask restorationTavian Barnes2025-01-182-0/+5
|
* sighook: Don't forget to check `initialized` in sigreset()Tavian Barnes2025-01-181-0/+4
|
* sighook: Fix up siginit() error pathsTavian Barnes2025-01-181-8/+14
|
* xspawn: Unblock signals between fork() and exec()Tavian Barnes2025-01-181-2/+15
| | | | | | Otherwise the child process runs with all signals blocked. Fixes: 423cfa4 ("xspawn: Mask signals before fork()")
* sighook: New sigreset() function to reset all handlersTavian Barnes2025-01-182-3/+45
|
* sighook: Convert siglist to a more general rcu_list typeTavian Barnes2025-01-181-52/+66
|
* build: Feature-detect #pragma nounroll supportTavian Barnes2025-01-173-2/+13
|
* list: Don't use leading underscores for globalsTavian Barnes2025-01-161-6/+6
|
* ioq: Don't unroll the spin loopTavian Barnes2025-01-162-1/+15
|
* ioq: Prefetch slots with a write intentTavian Barnes2025-01-161-1/+1
|
* build: Check for compound literal storage-class supportTavian Barnes2025-01-073-1/+8
| | | | This lets us use them on GCC >= 13, even before C23.
* configure: Suggest --enable-release over RELEASE=y etc.Tavian Barnes2025-01-071-0/+19
|
* configure: Reduce redundant info in CONFFLAGS for bfs --versionTavian Barnes2025-01-071-1/+8
|
* sighook: Add some missing fatal signalsTavian Barnes2024-12-241-5/+14
|
* sighook: Preserve the exact siginfo_t in reraise() on LinuxTavian Barnes2024-12-241-3/+16
| | | | Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=66dd34ad31e5963d72a700ec3f2449291d322921
* sighook: Always re-raise faults on macOSTavian Barnes2024-12-222-0/+11
| | | | | | | | | | macOS always fills in si_code for SIG{BUS,ILL,SEGV} as if it were a real hardware fault, so returning from the handler is not guaranteed to re- trigger the signal. Fixes: aecdabb ("sighook: Return instead of re-raising for faults") Link: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2386463/4/util/posix/signals_test.cc Link: https://github.com/chromium/crashpad/commit/e0d8a0aa01ac176804077f1f128ccc894c098f79
* tests/sighook: Add missing #include <sys/wait.h>Tavian Barnes2024-12-191-2/+3
|
* tests/gnu: Add an -ignore_readdir_race test for removed directoriesTavian Barnes2024-12-172-0/+7
| | | | Link: https://savannah.gnu.org/bugs/index.php?45930
* tests/sighook: Add atsigexit() testsTavian Barnes2024-12-171-1/+77
|
* sanity: New sanitize_resize() functionTavian Barnes2024-12-162-16/+33
| | | | | This wraps __sanitizer_annotate_contiguous_container() to give byte-precise tracking of usable allocation sizes with ASan.
* sanity: Get rid of sanitize_ignore()Tavian Barnes2024-12-162-11/+6
| | | | | It's probably nicer to avoid evaluating expensive arguments when not sanitizing, rather than relying on the optimizer to clean them up.
* ci: Update VM versionsTavian Barnes2024-12-101-3/+3
|
* build(deps): bump cross-platform-actions/action from 0.25.0 to 0.26.0dependabot[bot]2024-12-091-3/+3
| | | | | | | | | | | | | | | Bumps [cross-platform-actions/action](https://github.com/cross-platform-actions/action) from 0.25.0 to 0.26.0. - [Release notes](https://github.com/cross-platform-actions/action/releases) - [Changelog](https://github.com/cross-platform-actions/action/blob/master/changelog.md) - [Commits](https://github.com/cross-platform-actions/action/compare/v0.25.0...v0.26.0) --- updated-dependencies: - dependency-name: cross-platform-actions/action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
* docs/bfs.1: Add copyright commentsTavian Barnes2024-12-041-0/+2
|
* ioq: Refactor ioq_ring_probe_flags()Tavian Barnes2024-12-041-11/+13
|
* tests/sighook: Test the SH_ONESHOT flagTavian Barnes2024-12-041-2/+28
|
* ioq: Try spinning before blocking in ioq_slot_wait()Tavian Barnes2024-12-031-1/+17
|
* ioq: Submit and pop requests in batchesTavian Barnes2024-12-035-17/+44
| | | | | The new ioq_submit() function is now necessary to call to ensure the pending request batch is flushed.
* ioq: Add more io_uring setup flagsTavian Barnes2024-12-031-20/+55
|
* ioq: Refactor io_uring submission logicTavian Barnes2024-12-031-94/+145
|
* ioq: Use ioq_batch for both pushing and poppingTavian Barnes2024-12-031-47/+84
|
* ioq: Add a hash function between slots and monitorsTavian Barnes2024-12-031-1/+11
| | | | | | This helps avoid situations where multiple waiters block on different slots using the same monitor, which happened more often than expected due to correlations caused by batching.
* ioq: Prefetch pointers before popping themTavian Barnes2024-12-032-8/+10
| | | | | Also, cache-align struct ioq_ent to avoid false sharing when two workers are handling neighbouring requests.
* bench/ioq: New ioq microbenchmarkTavian Barnes2024-12-032-1/+332
|
* ioq: Add an ioq_nop() operation for benchmarkingTavian Barnes2024-12-023-0/+62
|
* xtime: New timespec utility functionsTavian Barnes2024-12-023-23/+95
|
* sighook: New SH_ONESHOT flagTavian Barnes2024-12-022-1/+21
|