test(procfs): fix TID reuse cache test semantics - #2179
Open
fslongjin wants to merge 1 commit into
Open
Conversation
pthread_join only waits for CLONE_CHILD_CLEARTID completion and does not guarantee that the exiting TID has already been unhashed from procfs. Remove the immediate ENOENT assertion that depended on that unsupported ordering. Treat failure to observe TID reuse within the fixed construction budget as an unmet test precondition on every platform. The namespace open and readlink checks still execute while each replacement thread is alive, so a stale cached TID directory continues to fail whenever reuse is actually observed. Fixes DragonOS-Community#2174 Signed-off-by: longjin <longjin@dragonos.org>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/proc/<tgid>/task/<tid>to disappear immediately afterpthread_joinRoot cause
pthread_joinwaits for the kernel'sCLONE_CHILD_CLEARTIDclear-and-wake operation. Linux and DragonOS both perform that operation before the exiting thread is necessarily unhashed from the PID tables, so join completion does not establish that the procfs task directory must already returnENOENT.The test also assumed that DragonOS must reuse a specific TID within 128 attempts. That finite reuse bound is not a userspace ABI guarantee. Runs that do not construct the reuse precondition now skip, while runs that observe reuse still execute all namespace open and readlink assertions.
Validation
make -C user/apps/tests/dunitest bin/normal/proc_pid_reuse_cache_testmake kernelFixes #2174