Builder ffmpeg64-solaris10-i386 Build #14126
Results:
Failed
SourceStamp:
| Project | ffmpeg |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Branch | master |
| Revision | e3e6e8fa1e1438085a0799bd25f9003fe8065520 |
| Changes | 8 changes |
BuildSlave:
unstable10xReason:
The SingleBranchScheduler scheduler named 'schedule-ffmpeg64-solaris10-i386' triggered this build
Steps and Logfiles:
Build Properties:
| Name | Value | Source |
|---|---|---|
| branch | master | Build |
| builddir | /export/home/buildbot/slave/ffmpeg64-solaris10-i386 | slave |
| buildername | ffmpeg64-solaris10-i386 | Builder |
| buildnumber | 14126 | Build |
| codebase | Build | |
| project | ffmpeg | Build |
| repository | https://git.ffmpeg.org/ffmpeg.git | Build |
| revision | e3e6e8fa1e1438085a0799bd25f9003fe8065520 | Build |
| scheduler | schedule-ffmpeg64-solaris10-i386 | Scheduler |
| slavename | unstable10x | BuildSlave |
| workdir | /export/home/buildbot/slave/ffmpeg64-solaris10-i386 | slave (deprecated) |
Forced Build Properties:
| Name | Label | Value |
|---|
Responsible Users:
- Andreas Rheinhardtandreas.rheinhardt@outlook.com
- Kacper Michajłowkasper93@gmail.com
- Michael Niedermayermichael@niedermayer.cc
Timing:
| Start | Mon Sep 14 03:04:23 2026 |
| End | Mon Sep 14 03:04:27 2026 |
| Elapsed | 4 secs |
All Changes:
:
Change #281701
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 14 Sep 2026 04:35:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8f7438475d3b7856943ae0973346c6f00659edfc Comments
compat/atomics/win32: rewrite and fix stdatomic.h The old emulation had several problems. It typedef'd every atomic type to intptr_t and implemented the operations on that storage, which broke in several ways. - atomic_int_least64_t and the other 64-bit types were 4 bytes on 32-bit targets, silently truncating stored values. - atomic_compare_exchange_strong() took intptr_t *expected instead of a pointer to the corresponding non-atomic type. Basically, producing OOB reads and writes when working with < 64-bit atomic types on 64-bit targets. Note that while all atomic_* types are typedef'd to intptr_t, the caller provides non atomic values, like int*. - Unsigned wraparound left garbage in the high bits of the storage, so later comparisons of loaded values failed. - atomic_fetch_sub() negated the operand in its own unsigned type, turning small unsigned subtractions into additions of huge values. - atomic_exchange() returned PVOID and loads and stores were plain non-volatile accesses. - atomic_signal_fence() was a no-op instead of a compiler barrier. Rewrite this using _Generic dispatch, to make this implementation usable by callers, as native stdatomic.h it aims to emulate. While at it make the impl more conformant with the C23 standard. ATOMIC_VAR_INIT is not provided anymore, it was removed in C23 and has no users in the tree. Additionally emulate the _Atomic qualifier form for integer and pointer types. The scope and limitations are documented in the header. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- compat/atomics/win32/stdatomic.h
Change #281702
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 14 Sep 2026 04:35:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision ecd49a58ece198e6fd538f6763e47d9f579cbc89 Comments
avcodec/vvc: remove workaround for broken win32 stdatomic emulation The compat header now takes a pointer to the corresponding non-atomic type in atomic_compare_exchange_strong() as the standard requires, so plain int is correct everywhere. Note that VVC is the only place that worked around this, all other users were simply broken with the old emulation. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- libavcodec/vvc/thread.c
Change #281703
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 14 Sep 2026 04:35:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision d939b3edcbb2c715cc3d524167826281eccd34de Comments
compat/atomics/dummy: rewrite and fix stdatomic.h This header shared the win32 emulation's design and therefore its bugs. Bring the dummy version in sync and fix all issues. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- compat/atomics/dummy/stdatomic.h
Change #281704
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 14 Sep 2026 04:35:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision b2854aadce556094f9d3293ae8b5ebad1d9500ea Comments
compat/atomics: split the generic stdatomic.h from the backend primitives The win32 and dummy headers shared the whole standard surface, move it into common header and keep backend specific implementation in _impl.h headers. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- compat/atomics/dummy/stdatomic.h
- compat/atomics/dummy/stdatomic_impl.h
- compat/atomics/stdatomic.h
- compat/atomics/win32/stdatomic.h
- compat/atomics/win32/stdatomic_impl.h
- configure
Change #281705
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 14 Sep 2026 04:35:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 8a1feb3c701596f4a8570ab7f04fa5525550cbfa Comments
compat/atomics: store pointers through the exchange on MSVC for ARM before 19.44 The alias analysis of MSVC for ARM and ARM64 before 19.44 does not track a pointer that is converted to an integer for the __iso_volatile_store and __stlr intrinsics, so the stores initializing the pointed-to object are eliminated as dead. Storing the address of an automatic array into an atomic pointer and reading through it afterwards then reads uninitialized stack. The stdatomic.h of /experimental:c11atomics generates the same code, 19.44 is the first version without the bug. The interlocked exchange is not affected, and with its result unused it compiles to the same store as a plain store would without the bug. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- compat/atomics/stdatomic.h
Change #281706
Category ffmpeg Changed by Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Changed at Mon 14 Sep 2026 04:35:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision 4ce1a456f2061c305209819928f081d016c676a3 Comments
avformat/allformats, avutil/log: Use proper atomic types Up until now, these files use atomic_uintptr_t instead of the proper atomic types because _Atomic has not been supported by our stdatomics.h fallback. This is ugly and in case of log.c also entailed storing a function pointer in uintptr_t, although uintptr_t is only guaranteed to be capable of storing object pointers. The recent changes to the fallbacks allow using _Atomic unconditionally, so avoid atomic_uintptr_t. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Changed files
- libavformat/allformats.c
- libavutil/log.c
Change #281707
Category ffmpeg Changed by Kacper Michajłow <kasper93@gmail.com> Changed at Mon 14 Sep 2026 04:35:12 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision eaebdc491d1f9950ec4ee0b033a36ab2194c9f2a Comments
configure: enable shared protocol also with native atomics stdatomic.h is always available, either the native or the compat version, so the stdatomic dependency was always incorrect. The stdatomic check is internal to configure, it only decides whether the compat version has to be added, and should not be used as a dependency of any code. Before the recent compat/atomics rewrite the compat headers were not compatible with the way shared.c uses atomics, so the protocol was silently disabled with them, probably by accident. The compat win32 version now works just fine with shared.c. What the protocol does need are atomic operations that synchronize processes sharing the cache. The dummy backed is excluded, we need working atomic operations even in single-threaded build. However small, such configuration is, every relevant target should have stdatomic available anyway. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- configure
Change #281708
Category ffmpeg Changed by Michael Niedermayer <michael@niedermayer.cc> Changed at Mon 14 Sep 2026 04:35:13 Repository https://git.ffmpeg.org/ffmpeg.git Project ffmpeg Branch master Revision e3e6e8fa1e1438085a0799bd25f9003fe8065520 Comments
avutil/tests: add stdatomic interface fate test Exercise integer types and widths, unsigned wraparound, failed-CAS writeback, pointer qualifier forms, bool normalization and atomic_flag against whichever backend configure selects. Print actual results for comparison with tests/ref/fate/atomic. Keep expected values non-atomic, sequence dependent operations before printing, and retry weak CAS so spurious failure does not change FATE output. Load function pointers into an ordinary local before calling. Validated with GCC 13 and Clang 18 at O0/O3 under ASan+UBSan for native and dummy atomics on AArch64. Native and forced-dummy focused builds pass fate-atomic and fate-buffer. Windows compilation of this amended test has not been independently repeated. Assisted-by: Fairy
Changed files
- libavutil/Makefile
- libavutil/tests/atomic.c
- tests/fate/libavutil.mak
- tests/ref/fate/atomic