On Wed, 2025-03-05 at 10:20 -0800, Amery Hung wrote: > Traffic monitor thread may see dangling stdout as the main thread closes > and reassigns stdout without protection. This happens when the main thread > finishes one subtest and moves to another one in the same netns_new() > scope. > > The issue can be reproduced by running test_progs repeatedly with traffic > monitor enabled: > > for ((i=1;i<=100;i++)); do > ./test_progs -a flow_dissector_skb* -m '*' > done > > For restoring stdout in crash_handler(), since it does not really care > about closing stdout, simlpy flush stdout and restore it to the original > one. > > Then, Fix the issue by consolidating stdio_restore_cleanup() and > stdio_restore(), and protecting the use/close/assignment of stdout with > a lock. The locking in the main thread is always performed regradless of > whether traffic monitor is running or not for simplicity. It won't have > any side-effect. > > Signed-off-by: Amery Hung <ameryhung@xxxxxxxxx> > --- Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx> [...]