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