After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 741417 - Crash when building gtkmm documentation
Crash when building gtkmm documentation
Status: RESOLVED FIXED
Product: doxygen
Classification: Other
Component: general
1.8.8-GIT
Other Linux
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2014-12-12 03:58 UTC by Ting-Wei Lan
Modified: 2014-12-25 16:02 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
reference/Doxyfile (13.97 KB, text/plain)
2014-12-16 01:58 UTC, Ting-Wei Lan
Details
Doxygen valgrind log (3.10 KB, text/plain)
2014-12-17 11:32 UTC, Ting-Wei Lan
Details

Description Ting-Wei Lan 2014-12-12 03:58:07 UTC
This problem happens in doxygen 1.8.8 release and the master branch.
I test it with the master branch of doxygen and gtkmm.


Here is the output:

Building group list...
Building directory list...
Building namespace list...
Building file list...
Building class list...
     27473 Segmentation fault      (core dumped) | MMDOCTOOLDIR="../docs" "/path/to/doxygen" -


Here is the backtrace:

  • #0 __strncpy_sse2_unaligned
    at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S line 296
  • #1 qstrncpy
    at qcstring.cpp line 555
  • #2 QCString::mid
    at qcstring.cpp line 260
  • #3 buildScopeFromQualifiedName
    at doxygen.cpp line 1013
  • #4 addClassToContext
    at doxygen.cpp line 1324
  • #5 buildClassList
    at doxygen.cpp line 1412
  • #6 buildClassList
    at doxygen.cpp line 1414
  • #7 buildClassList
    at doxygen.cpp line 1414
  • #8 parseInput
    at doxygen.cpp line 11099
  • #9 main
    at main.cpp line 37

Comment 1 Dimitri van Heesch 2014-12-13 10:25:25 UTC
I think this problem has already been solved in the meantime. Can you please check with the latest snapshot from GitHub?
Comment 2 Ting-Wei Lan 2014-12-13 15:11:23 UTC
I already use the latest snapshot (master branch). It still crashes now.
Comment 3 Dimitri van Heesch 2014-12-14 17:00:32 UTC
Can you please provide some step by step instructions how to reproduce this?
Also mention the version of gtkmm you are using. I tried running doxygen on gtkmm 3.10.1 sources but I didn't get this crash.
Comment 4 Ting-Wei Lan 2014-12-14 18:13:53 UTC
It works fine with 3.10.1, but it crashes with the master branch of gtkmm.

Steps to reproduce the problem:

1. Get the latest gtkmm source:
$ git clone git://git.gnome.org/gtkmm

2. Build gtkmm with default options
$ env DOXYGEN=/path/to/latest/doxygen ./autogen.sh --prefix /path/to/build/prefix --disable-static
$ make -j4

Doxygen will crash when building the documentation. I test this on Fedora 21.
Comment 5 Dimitri van Heesch 2014-12-15 20:03:04 UTC
Thanks for the details. Unfortunately my Linux distro is too old to resolve all build dependencies for the latest greatest version of gtkmm. 

Could you please attach the Doxyfile that is created after a succesful configure/build to this bug report? That's probably all I need.
Comment 6 Ting-Wei Lan 2014-12-16 01:58:03 UTC
Created attachment 292785 [details]
reference/Doxyfile

gtkmm constructs Doxyfile using shell command and the result are sent to doxygen by stdin.
The command it uses is:

( echo '@INCLUDE =' reference/Doxyfile && echo 'INPUT =' ../gdk/gdkmm/applaunchcontext.h ../gdk/gdkmm/cursor.h ../gdk/gdkmm/device.h ../gdk/gdkmm/devicemanager.h ../gdk/gdkmm/display.h ../gdk/gdkmm/displaymanager.h ../gdk/gdkmm/dragcontext.h ../gdk/gdkmm/event.h ../gdk/gdkmm/pixbuf.h ../gdk/gdkmm/pixbufanimation.h ../gdk/gdkmm/pixbufanimationiter.h ../gdk/gdkmm/pixbufformat.h ../gdk/gdkmm/pixbufloader.h ../gdk/gdkmm/rectangle.h ../gdk/gdkmm/rgba.h ../gdk/gdkmm/screen.h ../gdk/gdkmm/timecoord.h ../gdk/gdkmm/types.h ../gdk/gdkmm/visual.h ../gdk/gdkmm/window.h ../gdk/gdkmm/color.h ../gdk/gdkmm/general.h ../gtk/gtkmm/aboutdialog.h ../gtk/gtkmm/accelgroup.h ../gtk/gtkmm/accellabel.h ../gtk/gtkmm/action.h ../gtk/gtkmm/actionable.h ../gtk/gtkmm/actionbar.h ../gtk/gtkmm/actiongroup.h ../gtk/gtkmm/activatable.h ../gtk/gtkmm/adjustment.h ../gtk/gtkmm/appchooser.h ../gtk/gtkmm/appchooserbutton.h ../gtk/gtkmm/appchooserdialog.h ../gtk/gtkmm/appchooserwidget.h ../gtk/gtkmm/application.h ../gtk/gtkmm/applicationwindow.h ../gtk/gtkmm/aspectframe.h ../gtk/gtkmm/assistant.h ../gtk/gtkmm/bin.h ../gtk/gtkmm/border.h ../gtk/gtkmm/box.h ../gtk/gtkmm/buildable.h ../gtk/gtkmm/builder.h ../gtk/gtkmm/button.h ../gtk/gtkmm/buttonbox.h ../gtk/gtkmm/calendar.h ../gtk/gtkmm/cellarea.h ../gtk/gtkmm/cellareabox.h ../gtk/gtkmm/cellareacontext.h ../gtk/gtkmm/celleditable.h ../gtk/gtkmm/celllayout.h ../gtk/gtkmm/cellrenderer.h ../gtk/gtkmm/cellrendereraccel.h ../gtk/gtkmm/cellrenderercombo.h ../gtk/gtkmm/cellrendererpixbuf.h ../gtk/gtkmm/cellrendererprogress.h ../gtk/gtkmm/cellrendererspin.h ../gtk/gtkmm/cellrendererspinner.h ../gtk/gtkmm/cellrenderertext.h ../gtk/gtkmm/cellrenderertoggle.h ../gtk/gtkmm/cellview.h ../gtk/gtkmm/checkbutton.h ../gtk/gtkmm/checkmenuitem.h ../gtk/gtkmm/clipboard.h ../gtk/gtkmm/colorbutton.h ../gtk/gtkmm/colorchooser.h ../gtk/gtkmm/colorchooserdialog.h ../gtk/gtkmm/combobox.h ../gtk/gtkmm/comboboxtext.h ../gtk/gtkmm/container.h ../gtk/gtkmm/cssprovider.h ../gtk/gtkmm/csssection.h ../gtk/gtkmm/dialog.h ../gtk/gtkmm/drawingarea.h ../gtk/gtkmm/editable.h ../gtk/gtkmm/entry.h ../gtk/gtkmm/entrycompletion.h ../gtk/gtkmm/entrybuffer.h ../gtk/gtkmm/enums.h ../gtk/gtkmm/eventbox.h ../gtk/gtkmm/eventcontroller.h ../gtk/gtkmm/expander.h ../gtk/gtkmm/filechooser.h ../gtk/gtkmm/filechooserbutton.h ../gtk/gtkmm/filechooserdialog.h ../gtk/gtkmm/filechooserwidget.h ../gtk/gtkmm/filefilter.h ../gtk/gtkmm/fixed.h ../gtk/gtkmm/flowbox.h ../gtk/gtkmm/flowboxchild.h ../gtk/gtkmm/fontbutton.h ../gtk/gtkmm/fontchooser.h ../gtk/gtkmm/fontchooserdialog.h ../gtk/gtkmm/fontchooserwidget.h ../gtk/gtkmm/frame.h ../gtk/gtkmm/gesture.h ../gtk/gtkmm/gesturedrag.h ../gtk/gtkmm/gesturelongpress.h ../gtk/gtkmm/gesturemultipress.h ../gtk/gtkmm/gesturepan.h ../gtk/gtkmm/gesturerotate.h ../gtk/gtkmm/gesturesingle.h ../gtk/gtkmm/gestureswipe.h ../gtk/gtkmm/gesturezoom.h ../gtk/gtkmm/grid.h ../gtk/gtkmm/headerbar.h ../gtk/gtkmm/hvbox.h ../gtk/gtkmm/iconinfo.h ../gtk/gtkmm/icontheme.h ../gtk/gtkmm/iconview.h ../gtk/gtkmm/image.h ../gtk/gtkmm/infobar.h ../gtk/gtkmm/invisible.h ../gtk/gtkmm/label.h ../gtk/gtkmm/layout.h ../gtk/gtkmm/levelbar.h ../gtk/gtkmm/linkbutton.h ../gtk/gtkmm/listbox.h ../gtk/gtkmm/listboxrow.h ../gtk/gtkmm/liststore.h ../gtk/gtkmm/lockbutton.h ../gtk/gtkmm/main.h ../gtk/gtkmm/menu.h ../gtk/gtkmm/menubar.h ../gtk/gtkmm/menubutton.h ../gtk/gtkmm/menuitem.h ../gtk/gtkmm/menushell.h ../gtk/gtkmm/menutoolbutton.h ../gtk/gtkmm/messagedialog.h ../gtk/gtkmm/misc.h ../gtk/gtkmm/notebook.h ../gtk/gtkmm/offscreenwindow.h ../gtk/gtkmm/orientable.h ../gtk/gtkmm/overlay.h ../gtk/gtkmm/pagesetup.h ../gtk/gtkmm/paned.h ../gtk/gtkmm/papersize.h ../gtk/gtkmm/placessidebar.h ../gtk/gtkmm/popover.h ../gtk/gtkmm/printcontext.h ../gtk/gtkmm/printoperation.h ../gtk/gtkmm/printoperationpreview.h ../gtk/gtkmm/printsettings.h ../gtk/gtkmm/progressbar.h ../gtk/gtkmm/radioaction.h ../gtk/gtkmm/radiobutton.h ../gtk/gtkmm/radiomenuitem.h ../gtk/gtkmm/radiotoolbutton.h ../gtk/gtkmm/range.h ../gtk/gtkmm/recentaction.h ../gtk/gtkmm/recentchooser.h ../gtk/gtkmm/recentchooserdialog.h ../gtk/gtkmm/recentchoosermenu.h ../gtk/gtkmm/recentchooserwidget.h ../gtk/gtkmm/recentfilter.h ../gtk/gtkmm/recentinfo.h ../gtk/gtkmm/recentmanager.h ../gtk/gtkmm/requisition.h ../gtk/gtkmm/revealer.h ../gtk/gtkmm/scale.h ../gtk/gtkmm/scalebutton.h ../gtk/gtkmm/scrollable.h ../gtk/gtkmm/scrollbar.h ../gtk/gtkmm/scrolledwindow.h ../gtk/gtkmm/searchbar.h ../gtk/gtkmm/searchentry.h ../gtk/gtkmm/selectiondata.h ../gtk/gtkmm/separator.h ../gtk/gtkmm/separatormenuitem.h ../gtk/gtkmm/separatortoolitem.h ../gtk/gtkmm/settings.h ../gtk/gtkmm/sizegroup.h ../gtk/gtkmm/spinbutton.h ../gtk/gtkmm/spinner.h ../gtk/gtkmm/stack.h ../gtk/gtkmm/stackswitcher.h ../gtk/gtkmm/statusbar.h ../gtk/gtkmm/stylecontext.h ../gtk/gtkmm/styleprovider.h ../gtk/gtkmm/switch.h ../gtk/gtkmm/targetlist.h ../gtk/gtkmm/textattributes.h ../gtk/gtkmm/textbuffer.h ../gtk/gtkmm/textchildanchor.h ../gtk/gtkmm/textiter.h ../gtk/gtkmm/textmark.h ../gtk/gtkmm/texttag.h ../gtk/gtkmm/texttagtable.h ../gtk/gtkmm/textview.h ../gtk/gtkmm/toggleaction.h ../gtk/gtkmm/togglebutton.h ../gtk/gtkmm/toggletoolbutton.h ../gtk/gtkmm/toolbar.h ../gtk/gtkmm/toolbutton.h ../gtk/gtkmm/toolitem.h ../gtk/gtkmm/toolitemgroup.h ../gtk/gtkmm/toolpalette.h ../gtk/gtkmm/toolshell.h ../gtk/gtkmm/tooltip.h ../gtk/gtkmm/treedragdest.h ../gtk/gtkmm/treedragsource.h ../gtk/gtkmm/treeiter.h ../gtk/gtkmm/treemodel.h ../gtk/gtkmm/treemodelfilter.h ../gtk/gtkmm/treemodelsort.h ../gtk/gtkmm/treepath.h ../gtk/gtkmm/treerowreference.h ../gtk/gtkmm/treeselection.h ../gtk/gtkmm/treesortable.h ../gtk/gtkmm/treestore.h ../gtk/gtkmm/treeview.h ../gtk/gtkmm/treeviewcolumn.h ../gtk/gtkmm/uimanager.h ../gtk/gtkmm/viewport.h ../gtk/gtkmm/volumebutton.h ../gtk/gtkmm/widget.h ../gtk/gtkmm/widgetpath.h ../gtk/gtkmm/window.h ../gtk/gtkmm/pagesetupunixdialog.h ../gtk/gtkmm/printer.h ../gtk/gtkmm/printjob.h ../gtk/gtkmm/printunixdialog.h ../gtk/gtkmm/plug.h ../gtk/gtkmm/socket.h ../gtk/gtkmm/alignment.h ../gtk/gtkmm/arrow.h ../gtk/gtkmm/colorselection.h ../gtk/gtkmm/fontselection.h ../gtk/gtkmm/handlebox.h ../gtk/gtkmm/hvbuttonbox.h ../gtk/gtkmm/hvpaned.h ../gtk/gtkmm/hvscale.h ../gtk/gtkmm/hvscrollbar.h ../gtk/gtkmm/hvseparator.h ../gtk/gtkmm/iconfactory.h ../gtk/gtkmm/iconset.h ../gtk/gtkmm/iconsource.h ../gtk/gtkmm/imagemenuitem.h ../gtk/gtkmm/numerableicon.h ../gtk/gtkmm/statusicon.h ../gtk/gtkmm/stockitem.h ../gtk/gtkmm/table.h ../gtk/gtkmm/tearoffmenuitem.h ../gtk/gtkmm/accelkey.h ../gtk/gtkmm/accelmap.h ../gtk/gtkmm/base.h ../gtk/gtkmm/border.h ../gtk/gtkmm/cellrenderer_generation.h ../gtk/gtkmm/childpropertyproxy.h ../gtk/gtkmm/childpropertyproxy_base.h ../gtk/gtkmm/listviewtext.h ../gtk/gtkmm/object.h ../gtk/gtkmm/radiobuttongroup.h ../gtk/gtkmm/selectiondata_private.h ../gtk/gtkmm/styleproperty.h ../gtk/gtkmm/targetentry.h ../gtk/gtkmm/treemodelcolumn.h ../gtk/gtkmm/treeview_private.h ../gtk/gtkmm/stock.h ../gtk/gtkmm/stockid.h ../gtk/gtkmm.h ) | MMDOCTOOLDIR="../docs" "/path/to/doxygen" -
Comment 7 Ting-Wei Lan 2014-12-16 02:02:49 UTC
(In reply to comment #5)
> Thanks for the details. Unfortunately my Linux distro is too old to resolve all
> build dependencies for the latest greatest version of gtkmm. 
> 

Build dependencies can be resolved by installing JHBuild (https://git.gnome.org/browse/jhbuild) and running `jhbuild build gtkmm'.
Comment 8 Dimitri van Heesch 2014-12-16 21:00:11 UTC
Seems to be truely impossible for me to get it to build even with jhbuild :-(
So I'm afraid I need more help. Can you send me the whole thing pre-build? Or
otherwise run valgrind on doxygen for me and send me the output of that?
Comment 9 Ting-Wei Lan 2014-12-17 10:05:14 UTC
(In reply to comment #8)
> Seems to be truely impossible for me to get it to build even with jhbuild :-(

Do you mean that there are system dependencies which cannot be satisfied?

> So I'm afraid I need more help. Can you send me the whole thing pre-build? Or
> otherwise run valgrind on doxygen for me and send me the output of that?

I can run valgrind and attach the output later.
Comment 10 Ting-Wei Lan 2014-12-17 11:32:11 UTC
Created attachment 292887 [details]
Doxygen valgrind log
Comment 11 Ting-Wei Lan 2014-12-17 14:02:58 UTC
After I rebuild gtkmm and all its dependencies (32 other packages), doxygen doesn't crash now.
Comment 12 Dimitri van Heesch 2014-12-17 19:19:44 UTC
Hmm, interesting turn of events.

Looking at your valgrind log I did find a potential issue that could be triggered by a tag file with some unexpected content. This may also explain why updating all dependencies (and thus also the tag files that doxygen imports) could make the problem go away.

Here is the commit:
https://github.com/doxygen/doxygen/commit/050fce2b73d6e4455808ab86da2fddcf2f26e9b5

Let me know if you still see this or similar problems with the patch included.
Comment 13 Ting-Wei Lan 2014-12-19 14:47:11 UTC
Thanks, the problem is fixed now. When will we get a new release?
Comment 14 Dimitri van Heesch 2014-12-25 16:02:51 UTC
This bug was previously marked ASSIGNED, which means it should be fixed in
doxygen version 1.8.9. Please verify if this is indeed the case. Reopen the
bug if you think it is not fixed and please include any additional information 
that you think can be relevant (preferrably in the form of a self-contained example).