Re: doxygen hangs when many call graphs are generated.

Takashi Yano via Cygwin <[email protected]>
Newsgroups gmane.os.cygwin,gmane.comp.lib.newlib
Message-ID <[email protected]>
On Wed, 16 Jul 2025 22:45:32 +0900
Takashi Yano via Cygwin <[email protected]> wrote:
> On Wed, 16 Jul 2025 21:36:04 +0900
> Takashi Yano via Cygwin <[email protected]> wrote:
> > On Wed, 16 Jul 2025 21:13:59 +0900
> > Takashi Yano via Cygwin <[email protected]> wrote:
> > 
> > > On Tue, 17 Jun 2025 21:46:47 +0900
> > > Takashi Yano wrote:
> > > > I encountered a problem of doxygen when many call graphs are generated.
> > > > 
> > > > How to reproduce:
> > > > 1) Make a empty directory.
> > > > 2) Place two files (Doxyfile, x.c) attached in the directory.
> > > > 3) Run doxygen in the directory.
> > > > 
> > > > It seems that this is a bug of cygwin1.dll and the cause is
> > > > a deadlock in newlib/libc/stdio/findfp.c:__fp_lock_all().
> 
> A simple reproducer is as follows.
> 
> #include <unistd.h>
> #include <stdio.h>
> #include <pthread.h>
> #include <sys/wait.h>
> 
> void *func(void *arg)
> {
> 	while (1) {
> 		FILE *f = fopen("/usr/bin/cygwin1.dll", "r"); /* Open something */
> 		fclose(f);
> 	}
> 	return NULL;
> }
> 
> int main()
> {
> 	pthread_t th;
> 	pthread_create(&th, NULL, func, NULL);
> 	int cnt = 0;
> 	while (1) {
> 		if (fork() == 0) {
> 			return 0;
> 		} else {
> 			wait(NULL);
> 			printf("Done %d\n", cnt++);
> 		}
> 	}
> }

I have submitted a patch for this issue to newlib mailing list.

-- 
Takashi Yano <[email protected]>

-- 
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.