On Sun, 25 May 2025 16:46:49 +0200, Christian Franke wrote:
On Sat, 24 May 2025 15:19:10 +0200, Christian Franke wrote:
If /proc/PID/maps is opened in parallel threads, the process PID may segfault.

Testcase:

...

Problem is not reproducible with any of the other /proc/PID/* files.


A closer look shows that the problem is unrelated to thread safety. The segfault also occurs when the following command is run simultaneously in two terminals:

$ while cat /proc/1234/maps > /dev/null; do printf .; done
.............cat: /proc/1234/maps: No such file or directory


The root of the problem is the call of RtlQueryProcessDebugInformation() here:
https://cygwin.com/git/?p=newlib-cygwin.git;a=blob;f=winsup/cygwin/fhandler/process.cc;h=8fae9be5#l630

If this part is removed, the segfault does no longer occur. Then /proc/PID/maps still work but the "[win heap ...]" information is missing. No patch provided because I don't know whether this could possibly be fixed without removing this functionality.

A test with a separate test program shows that the problem is unrelated to Cygwin: Parallel calls to RtlQueryProcessDebugInformation() with the same PID could be used to crash this process. It also "worked" with Notepad.exe.

Possible Windows (Version 10.0.22631.5039) bug?

--
Regards,
Christian


--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to