New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gives up after seeing egregiously complex template code #9296
Comments
It is not good that doxygen crashes, but some crashes were fixed in the current master (also some significant speedup improvements) so best to have a go with the current master and report back. You wrote "https://codereview.qt-project.org/c/qt/qt5/+/354231 again, but this time modified to reduce the scope:" what again (I know that you probably meant the procedure described in #9295 (as the 2 issues were submitted nearly at the same time),but it should be specified here and not just vaguely mentioned.
|
I tried to run with the current master and in the |
Some further remarks. I got the message:
I don't think it of influence here. The steps I executed:
In my run it stops at:
and when I give (after a while) a
@doxygen do you have an idea? @ec1oud An idea might also be to look into the setting of |
@doxygen I just did a quick rerun by setting:
and it looks like doxygen hangs at the same place (but gets to that place very fast). FYI the used |
@albert-github Looks like doxygen tries to terminate because an error writing a man page file (maybe due to long name): frame #21: 0x00000001006fefad doxygen`term(fmt="Could not open file %s for writing\n") at message.cpp:260:3 [opt]
frame #22: 0x0000000100582d03 doxygen`OutputGenerator::startPlainFile(this=0x0000000102b08bb0, name=<unavailable>) at outputgen.cpp:67:5 [opt]
frame #23: 0x0000000100530458 doxygen`ManGenerator::startFile(this=0x0000000102b08bb0, (null)=<unavailable>, manName=<unavailable>, (null)=<unavailable>, (null)=<unavailable>) at mangen.cpp:168:3 [opt] and while terminating it get stuck waiting for a dot runner to finish: * frame #0: 0x00007fff6df5f55e libsystem_kernel.dylib`__ulock_wait + 10
frame #1: 0x00007fff6e0225c2 libsystem_pthread.dylib`_pthread_join + 347
frame #2: 0x00007fff6b1245e6 libc++.1.dylib`std::__1::thread::join() + 24
frame #3: 0x00000001002c23d0 doxygen`DotWorkerThread::~DotWorkerThread() [inlined] DotWorkerThread::wait(this=<unavailable>) at dotrunner.h:94:29 [opt]
frame #4: 0x00000001002c23c8 doxygen`DotWorkerThread::~DotWorkerThread() [inlined] DotWorkerThread::~DotWorkerThread(this=0x0000000101e3b050) at dotrunner.cpp:295 [opt]
frame #5: 0x00000001002c23ba doxygen`DotWorkerThread::~DotWorkerThread(this=0x0000000101e3b050) at dotrunner.cpp:292 [opt]
frame #6: 0x000000010029b522 doxygen`DotManager::~DotManager() [inlined] std::__1::default_delete<DotWorkerThread>::operator(this=<unavailable>, __ptr=0x0000000101e3b050)(DotWorkerThread*) const at memory:2368:5 [opt]
frame #7: 0x000000010029b51a doxygen`DotManager::~DotManager() [inlined] std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >::reset(this=<unavailable>, __p=0x0000000000000000) at memory:2623 [opt]
frame #8: 0x000000010029b515 doxygen`DotManager::~DotManager() [inlined] std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >::~unique_ptr(this=<unavailable>) at memory:2577 [opt]
frame #9: 0x000000010029b515 doxygen`DotManager::~DotManager() [inlined] std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >::~unique_ptr(this=<unavailable>) at memory:2577 [opt]
frame #10: 0x000000010029b515 doxygen`DotManager::~DotManager() [inlined] std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > >::destroy(this=<unavailable>, __p=<unavailable>) at memory:1936 [opt]
frame #11: 0x000000010029b515 doxygen`DotManager::~DotManager() [inlined] void std::__1::allocator_traits<std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > > >::__destroy<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > >(__a=<unavailable>, __p=<unavailable>) at memory:1798 [opt]
frame #12: 0x000000010029b515 doxygen`DotManager::~DotManager() [inlined] void std::__1::allocator_traits<std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > > >::destroy<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > >(__a=<unavailable>, __p=<unavailable>) at memory:1635 [opt]
frame #13: 0x000000010029b515 doxygen`DotManager::~DotManager() [inlined] std::__1::__vector_base<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >, std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > > >::__destruct_at_end(this=0x0000000100fe3aa8, __new_last=0x0000000101e563c0) at vector:426 [opt]
frame #14: 0x000000010029b4f8 doxygen`DotManager::~DotManager() [inlined] std::__1::__vector_base<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >, std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > > >::clear(this=0x0000000100fe3aa8) at vector:369 [opt]
frame #15: 0x000000010029b4f8 doxygen`DotManager::~DotManager() [inlined] std::__1::__vector_base<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >, std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > > >::~__vector_base(this=0x0000000100fe3aa8) at vector:463 [opt]
frame #16: 0x000000010029b4e1 doxygen`DotManager::~DotManager() [inlined] std::__1::vector<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >, std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > > >::~vector(this=0x0000000100fe3aa8 size=17) at vector:555 [opt]
frame #17: 0x000000010029b4e1 doxygen`DotManager::~DotManager() [inlined] std::__1::vector<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> >, std::__1::allocator<std::__1::unique_ptr<DotWorkerThread, std::__1::default_delete<DotWorkerThread> > > >::~vector(this=0x0000000100fe3aa8 size=17) at vector:550 [opt]
frame #18: 0x000000010029b4e1 doxygen`DotManager::~DotManager(this=0x0000000100fe3a68) at dot.cpp:110 [opt]
frame #19: 0x00007fff6dec613c libsystem_c.dylib`__cxa_finalize_ranges + 319
frame #20: 0x00007fff6dec6412 libsystem_c.dylib`exit + 55
frame #21: 0x00000001006fefad doxygen`term(fmt="Could not open file %s for writing\n") at message.cpp:260:3 [opt] Setting |
@doxygen That would indeed be the explanation as the string is very long and, by head, the man pages take the name shown as the name for the file.
|
@albert-github The referenced commit addresses the issue where doxygen would hang after termination. It does not address the cause of termination (i.e. using a too long file name). The name of the file is used to refer to the man page, i.e. |
Aha. Writing man pages isn't so important to me anyway; that part was just a "what if" experiment that I forgot about. Yes I can imagine it's hard to name them when templates are involved, but if we wanted a set of man pages for Qt I guess we'd limit it to public API anyway, and exclude anything else that's problematic. BTW Anyway if you can make it work with |
|
Describe the bug
Generating docs for compound QtPrivate::IsContainerCompatibleWithModelRoleDataSpan< T, std::enable_if_t< std::conjunction_v< std::is_convertible< decltype(std::data(std::declval< T & >())), QModelRoleData * >, std::is_convertible< decltype(std::size(std::declval< T & >())), qsizetype >, std::is_convertible< typename std::iterator_traits< decltype(std::begin(std::declval< T & >()))>::value_type, QModelRoleData >, std::is_convertible< decltype(std::begin(std::declval< T & >()) !=std::end(std::declval< T & >())), bool >, std::negation< std::is_same< std::decay_t< T >, QModelRoleDataSpan > > > > >...
Exiting...
To Reproduce
https://codereview.qt-project.org/c/qt/qt5/+/354231 again, but this time modified to reduce the scope:
Version
1.8.20 (downgraded because 1.9.3 is crashing much earlier than that)
The text was updated successfully, but these errors were encountered: