<feed xmlns='http://www.w3.org/2005/Atom'>
<title>threadx.git/ports/linux/gnu/inc, branch v6.4.1_cert</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/threadx.git/atom/ports/linux/gnu/inc?h=v6.4.1_cert</id>
<link rel='self' href='http://cgit.235523.xyz/threadx.git/atom/ports/linux/gnu/inc?h=v6.4.1_cert'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/'/>
<updated>2026-10-14T14:57:14Z</updated>
<entry>
<title>Restored the Linux port mutex retry</title>
<updated>2026-10-14T14:57:14Z</updated>
<author>
<name>Frédéric Desbiens</name>
<email>frederic.desbiens@eclipse-foundation.org</email>
</author>
<published>2026-10-14T14:57:14Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=b017aea7e4e8a3e3d81fc110a5b815af754438eb'/>
<id>urn:sha1:b017aea7e4e8a3e3d81fc110a5b815af754438eb</id>
<content type='text'>
This was reverted because a NetX Secure regression test segfaulted with it
in place. The cause was the test: it hands the certificate verify path a
stack-local certificate whose signature it never assigns, and this change
moves the stack layout that decides whether the unassigned slot reads null
or a readable leftover. That test has been fixed, so the retry comes back.

Measured with the test unfixed and this change in place, on a layout built
without the stack protector: eight of eight runs segfault, the fault read
from the faulting process as a null signature dereferenced by the ECDSA
verify. With the test fixed, nineteen build configurations run it eight
times each with no fault.

Without this change, a thread signalled into the port's suspend handler
never returns to the contended-mutex loop, the next unlock's wake-up is
lost, the scheduler is left parked, and the timer interrupt never runs --
which stalls the tick and hangs about 0.39% of instances of a few TCP
tests for their full timeout.
</content>
</entry>
<entry>
<title>Reverted the Linux port mutex retry on this branch</title>
<updated>2026-09-30T19:10:15Z</updated>
<author>
<name>Frédéric Desbiens</name>
<email>frederic.desbiens@eclipse-foundation.org</email>
</author>
<published>2026-09-30T19:10:15Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=74d9e3937fa913380fdfdd902e528411c661ea3f'/>
<id>urn:sha1:74d9e3937fa913380fdfdd902e528411c661ea3f</id>
<content type='text'>
The backport fixes a real deadlock and is right in itself, but on this branch it
reproducibly breaks the NetX Duo nx_secure suite: nx_secure_tls_coverage_test
segfaults in 8 of 19 configurations on one run and 9 of 19 on a re-run of the same
commit, against four consecutive runs with none before it.

Whether the retry causes that or merely exposes something latent is not known. The
first guess, a kernel object outliving its stack frame, is wrong: that test's
sessions are file scope and its creates and deletes balance. The deadlock the
retry cures costs one configuration's coverage data at roughly 0.4% of test
instances, which the union absorbs, so the branch is measurably worse with it than
without while the interaction is unexplained.

This is a deferral, not a dismissal. The diagnosis stands, the reproduction is
recorded, and re-applying is one cherry-pick. The upstream fix is unaffected.

This reverts commit ac95c32c.

Assisted-by: Claude Code (Opus 5) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Stopped the Linux port losing a mutex wake-up to a suspend signal</title>
<updated>2026-09-30T15:55:52Z</updated>
<author>
<name>Frédéric Desbiens</name>
<email>frederic.desbiens@eclipse-foundation.org</email>
</author>
<published>2026-09-30T15:55:52Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=ac95c32c3e82c6db18b89fe6b7b23a89e2452e8a'/>
<id>urn:sha1:ac95c32c3e82c6db18b89fe6b7b23a89e2452e8a</id>
<content type='text'>
The port suspends a thread with a signal whose handler calls sigsuspend and does
not return until resumed, and takes its critical section with a bare
pthread_mutex_lock. A thread signalled while parked on _tx_linux_mutex never
returns to glibc's contended-mutex loop, so the next unlock's wake-up goes to a
thread that will not act on it and every other waiter is left parked on a mutex
that is free.

tx_linux_mutex_lock now calls a helper that waits with pthread_mutex_timedlock and
retries every TX_LINUX_MUTEX_RETRY_NSEC, one millisecond, so a lost wake-up costs a
retry period instead of the process.

The original fix was made by inspection, on a port never observed to deadlock. It
has now been observed. A stalled regression test reads the mutex free, owner zero,
with the scheduler still on its futex word; it never posts _tx_linux_isr_semaphore,
the timer thread never returns from _tx_thread_context_restore, and the simulated
clock stops. Bounding a wait cannot save it: one capture held 116 ticks of timeout
unchanged across 40 seconds.

Measured on netx_tcp_overlapping_packet_test_10, six workers on four pinned CPUs:
5 stalls in 1,266 runs before, 0 in 2,034 after, three held frozen through 60
seconds of untraced /proc sampling. netxduo/default_build_coverage is unmoved at
914/914, 121 skipped, 497 files, 11230/11256 lines and 6912/6925 branches.

(cherry picked from commit b567428f2a826fa24e78fc82f6a5dd46a87b079c)

Assisted-by: Claude Code (Opus 5) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Covered the byte allocate's overwritten trace entry via the port hook</title>
<updated>2026-09-16T15:27:52Z</updated>
<author>
<name>Frédéric Desbiens</name>
<email>frederic.desbiens@eclipse-foundation.org</email>
</author>
<published>2026-09-16T15:27:52Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=162814d654508b1929acfbef2684ae0af2ac21e6'/>
<id>urn:sha1:162814d654508b1929acfbef2684ae0af2ac21e6</id>
<content type='text'>
The byte allocate saves the time stamp of its own trace entry and comes back to
fill in the address it allocated, unless a later event overwrote the entry
meanwhile. Interrupts are off across all of the service but the pool search, and
nothing in the kernel writes a trace event in that gap, so the other arm never
ran.

The Linux port already calls out to the harness inside that gap:
TX_BYTE_ALLOCATE_EXTENSION exists for coverage work and sits between the restore
and the disable that bracket the search. It gains a second clause, under its own
flag, calling a routine the harness declares weakly. A new test filters the byte
pool event class so the allocate's own insert writes nothing and leaves the
buffer parked on the saved entry, then has the hook write a user event, which
lands on exactly that entry. Neither half reaches the arm alone.

One configuration cannot take it at all, and that is a property of the port
rather than of the test: under TX_MISRA_ENABLE the trace time stamp comes from a
function whose body returns zero, so every entry reads zero and the comparison
is 0 == 0 whatever overwrites it. The test drives the overwrite there too and
asserts the consequence only where the time source is real.

805/805 in each of the seven configurations. Union coverage is 4383/4383 lines
and 3150/3170 branches against 3147/3168; the denominator gains the new clause's
two outcomes and both are covered. Gate raised to 99.30.

Assisted-by: Claude Code (Opus 5) &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Update version number to 6.4.1</title>
<updated>2024-02-27T06:00:58Z</updated>
<author>
<name>TiejunZhou</name>
<email>50469179+TiejunMS@users.noreply.github.com</email>
</author>
<published>2024-02-27T06:00:58Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=27f0ce9ca2334b975c298fd00eac1bc05ecec1f7'/>
<id>urn:sha1:27f0ce9ca2334b975c298fd00eac1bc05ecec1f7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update copyright.</title>
<updated>2024-01-29T05:51:15Z</updated>
<author>
<name>Bo Chen (from Dev Box)</name>
<email>boche@microsoft.com</email>
</author>
<published>2024-01-29T05:51:15Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=8276bcf71142197e09551e29f1779299fa591ec7'/>
<id>urn:sha1:8276bcf71142197e09551e29f1779299fa591ec7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update release date and version (#338)</title>
<updated>2023-12-28T02:51:29Z</updated>
<author>
<name>TiejunZhou</name>
<email>50469179+TiejunMS@users.noreply.github.com</email>
</author>
<published>2023-12-28T02:51:29Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=d9ffb0f97dcc97c5dec5675439ea65f3f87b466b'/>
<id>urn:sha1:d9ffb0f97dcc97c5dec5675439ea65f3f87b466b</id>
<content type='text'>
* Update version number in API header

* Update release date and version</content>
</entry>
<entry>
<title>Update release version to 6.3.0 and date to 10-31-2023 (#308)</title>
<updated>2023-10-23T07:31:03Z</updated>
<author>
<name>TiejunZhou</name>
<email>50469179+TiejunMS@users.noreply.github.com</email>
</author>
<published>2023-10-23T07:31:03Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=13b700fd3ed763cedcba7dbd17b859077a01aa9c'/>
<id>urn:sha1:13b700fd3ed763cedcba7dbd17b859077a01aa9c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix compile warnings in Linux port. (#276)</title>
<updated>2023-06-19T09:45:16Z</updated>
<author>
<name>Yanwu Cai</name>
<email>70310922+yanwucai@users.noreply.github.com</email>
</author>
<published>2023-06-19T09:45:16Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=1b2995cea8aecd46c8bc012f2605dea6142bec01'/>
<id>urn:sha1:1b2995cea8aecd46c8bc012f2605dea6142bec01</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Release 6.2.1 on 08 Mar 2023. Expand to see details.</title>
<updated>2023-03-08T08:26:22Z</updated>
<author>
<name>Tiejun Zhou</name>
<email>tizho@microsoft.com</email>
</author>
<published>2023-03-08T08:26:22Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/threadx.git/commit/?id=2aa19f3de0b6cf09bb9dca78c8a53fe337b8f0f7'/>
<id>urn:sha1:2aa19f3de0b6cf09bb9dca78c8a53fe337b8f0f7</id>
<content type='text'>
cee19603d Include tx_user.h conditionally.
e40e08007 Update owners
d69641273 Update release date and version
394aee52f Add tx_user.h to GNU port assembly files
5cca2ddd0 RISC-V 64 bit port for Microchip
e0f2c373c Link Winmm.lib that required by the high-resolution timer.
6af472a68 Update Win32 port with high resolution timer.
aea7b556a Add DMB ISH barrier inst in ARMv8-A SMP scheduler
19091a262 Add .section .preamble to m3 m4 m7 module ports
ced60e1b7 Add missing parenthesis in ports assembly file
309dc77ca Modules Cortex-A7 IAR new port
c752a4063 Modules Cortex-A7 GNU new port
dc224b90f Fix race condition in tx_thread_wait_abort and update regression test
6e261f5b7 create threadx cmsis-pack
</content>
</entry>
</feed>
