Graphviz Issue Tracker
Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002549graphvizDotpublic2015-06-02 14:452015-06-05 00:25
Reporterscottaronbloom 
Assigned To 
PriorityhighSeveritycrashReproducibilityalways
StatusnewResolutionopen 
PlatformwindowsOSWin 8.1OS Version64bit
Summary0002549: Crash ONLY under windows 8.1 64 bit
DescriptionI use the cgraphlib system to build graphviz using cmake.

I have no issues for 64 bit linux, or 64 bit windows when running under Windows 7. However when running a 64 bit build under win 8.1 (and 8.0) it crashes 100% of the time.

Doesnt matter if the dot file was loaded or created via C calls tot he system
Steps To Reproduce64 bit windows 8.1, building graphviz under Visual Studio 2013

        GVC_t * gvc = gvContextPlugins( lt_preloaded_symbols, 0 );
        Agdesc_t graphDesc = Agdirected;
        graphDesc.directed = 1;
        graphDesc.strict = 0;
        graphDesc.no_loop = 0;
        graphDesc.maingraph = 1;
        graphDesc.flatlock = 0;
        graphDesc.no_write = 1;
        graphDesc.has_attrs = 1;
        graphDesc.has_cmpnd = 1;
        Agraph_t * graph = agopen( "test", graphDesc, 0 );
        agattr( graph, AGNODE, "shape", "ellipse" );
        agattr( graph, AGNODE, "fillcolor", "#ffffff" );
        agattr( graph, AGRAPH, "compound", "true" );
        agattr( graph, AGRAPH, "bgcolor", "#ffffff" );
        agsubg( graph, "cluster_clk1_group", 1 );
        agsafeset( graph, "label", "clk1_group", "" );
        Agnode_t * node1 = agnode( graph, "clk1", 1 );
        agsubnode( graph, node1, 1 );
        agsubg( graph, "cluster_clk2_group", 1 );
        agsafeset( graph, "label", "clk2_group", "" );
        Agnode_t * node2 = agnode( graph, "clk2",1 );
        agsubnode( graph, node2, 1 );
        Agedge_t * edge = agedge( graph, node1, node2, "clk1_group.clk1;clk2_group.clk2",1 );
        agsafeset( edge, "label", "2S,0U", "" );
        agsafeset( edge, "edgetooltip", "2 Synchronized\nUnsynchronized\n", "" );
        agsafeset( edge, "color", "#20b2aa", "" );
        agsafeset( edge, "ltail", "cluster_clk1_group", "" );
        agsafeset( edge, "lhead", "cluster_clk2_group", "" );
        agattr( graph, AGRAPH, "newrank", "true" );
        gvLayout( gvc, graph, "dot" );


Will crash 100% of the time in gvLayout.
TagsNo tags attached.
AUXILLARY-FILES
DATE-FIXED
FIX-COMMENT
FORMER-ID
INPUT-FILE
OUTPUT-FILE
STATUS-COMMENT
VERSION38
Attached Files

- Relationships

-  Notes
User avatar (0000945)
scottaronbloom (reporter)
2015-06-04 22:15

Good news.. I found the solution.

I am NOT sure if its a coding style issue, or a bug in the MicroSoft Linker.

If your linker has the switch /DYNAMICBASE set, rather than /DYNAMICBASE:NO, which is the default for windows Vista targets forward (according to MSDN) the crash occurs.
User avatar (0000946)
scottaronbloom (reporter)
2015-06-05 00:25

With some further investigaction, the /DYNAMICBASE option, is "probably" not the cause, this option, when disabled also turns off the /HIGHENTROPYVA option.

In further research, the high entropy, essentially says to randomize the memory location of data on the heap, with a weight into the 64 bit memory space..

If there is a 32 vs 64 bit issue, such as a case of the 64 bit memory pointer to a 32 bit integer, it may be masked on linux and 64 bit windows with the option off..

Also, I read, win 8 vs win7 has more security issues fixed/enhanced in the C/C++ runtime libs so its more likely to go into the 64 bit space...

- Issue History
Date Modified Username Field Change
2015-06-02 14:45 scottaronbloom New Issue
2015-06-04 22:15 scottaronbloom Note Added: 0000945
2015-06-05 00:25 scottaronbloom Note Added: 0000946


MantisBT 1.2.5[^]
Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker