Number: 15
Title: Win32 dot, crashes on some input
Submitter: Ian Badcoe
Date: Tue May 15 05:16:54 2001
Subsys: Dot
Version: 1.7.6 beta 1
System: x86-Other-2000
Severity: major
Problem:
Win2000 machine.

The following input crashes dot, the command line is:


dot -Tpng KPLSupermanDump.txt -o temp2.png -v

if cluster3 is removed, and its nodes merged into the main graph g, then it works.

and the '-v' output gives:


network simplex: 3 nodes 2 edges 0 iter 0.00 sec
network simplex: 4 nodes 3 edges 0 iter 0.00 sec
network simplex: 4 nodes 5 edges 0 iter 0.00 sec
network simplex: 4 nodes 5 edges 0 iter 0.00 sec
network simplex: 6 nodes 11 edges 0 iter 0.00 sec
network simplex: 91 nodes 166 edges 13 iter 0.00 sec
mincross: pass 0 iter 0 trying 0 cur_cross 23447 best_cross 23447
mincross: pass 0 iter 1 trying 0 cur_cross 13366 best_cross 13366
mincross: pass 0 iter 2 trying 1 cur_cross 1029364 best_cross 13366
mincross: pass 0 iter 3 trying 0 cur_cross 9286 best_cross 9286
mincross: pass 1 iter 0 trying 0 cur_cross 10310 best_cross 2246
mincross: pass 1 iter 1 trying 1 cur_cross 22325 best_cross 2246
mincross: pass 1 iter 2 trying 2 cur_cross 12373 best_cross 2246
mincross: pass 1 iter 3 trying 3 cur_cross 7251 best_cross 2246
mincross: pass 2 iter 0 trying 0 cur_cross 2246 best_cross 2246
mincross: pass 2 iter 1 trying 1 cur_cross 13269 best_cross 2246
mincross: pass 2 iter 2 trying 2 cur_cross 13320 best_cross 2246
mincross: pass 2 iter 3 trying 3 cur_cross 9253 best_cross 2246
mincross: pass 2 iter 4 trying 4 cur_cross 2258 best_cross 2246
mincross: pass 2 iter 5 trying 5 cur_cross 14277 best_cross 2246
mincross: pass 2 iter 6 trying 6 cur_cross 11351 best_cross 2246
mincross: pass 2 iter 7 trying 7 cur_cross 16296 best_cross 2246
mincross: pass 2 iter 8 trying 8 cur_cross 2295 best_cross 2246
merge2: graph g, rank 0 has only 1 < 5 nodes
merge2: graph g, rank 1 has only 10 < 25 nodes
merge2: graph g, rank 2 has only 22 < 45 nodes
merge2: graph g, rank 3 has only 39 < 72 nodes
merge2: graph g, rank 4 has only 34 < 67 nodes
merge2: graph g, rank 5 has only 17 < 29 nodes
merge2: graph g, rank 6 has only 18 < 20 nodes
mincross: pass 2 iter 0 trying 0 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 1 trying 1 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 2 trying 2 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 3 trying 3 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 4 trying 4 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 5 trying 5 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 6 trying 6 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 7 trying 7 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 8 trying 8 cur_cross 2332 best_cross 2332
mincross: pass 2 iter 0 trying 0 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 1 trying 1 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 2 trying 2 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 3 trying 3 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 4 trying 4 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 5 trying 5 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 6 trying 6 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 7 trying 7 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 8 trying 8 cur_cross 2395 best_cross 2395
mincross: pass 2 iter 0 trying 0 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 1 trying 1 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 2 trying 2 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 3 trying 3 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 4 trying 4 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 5 trying 5 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 6 trying 6 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 7 trying 7 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 8 trying 8 cur_cross 2381 best_cross 2381
mincross: pass 2 iter 0 trying 0 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 1 trying 1 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 2 trying 2 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 3 trying 3 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 4 trying 4 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 5 trying 5 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 6 trying 6 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 7 trying 7 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 8 trying 8 cur_cross 2383 best_cross 2383
mincross: pass 2 iter 0 trying 0 cur_cross 615 best_cross 615
mincross: pass 2 iter 1 trying 1 cur_cross 615 best_cross 615
mincross: pass 2 iter 2 trying 2 cur_cross 615 best_cross 615
mincross: pass 2 iter 3 trying 3 cur_cross 615 best_cross 615
mincross: pass 2 iter 4 trying 4 cur_cross 615 best_cross 615
mincross: pass 2 iter 5 trying 5 cur_cross 615 best_cross 615
mincross: pass 2 iter 6 trying 6 cur_cross 615 best_cross 615
mincross: pass 2 iter 7 trying 7 cur_cross 615 best_cross 615
mincross: pass 2 iter 8 trying 8 cur_cross 615 best_cross 615
mincross: pass 2 iter 0 trying 0 cur_cross 615 best_cross 615
mincross: pass 2 iter 1 trying 0 cur_cross 568 best_cross 568
mincross: pass 2 iter 2 trying 1 cur_cross 593 best_cross 568
mincross: pass 2 iter 3 trying 2 cur_cross 567 best_cross 567
mincross: pass 2 iter 4 trying 0 cur_cross 562 best_cross 562
mincross: pass 2 iter 5 trying 1 cur_cross 569 best_cross 562
mincross: pass 2 iter 6 trying 2 cur_cross 592 best_cross 562
mincross: pass 2 iter 7 trying 3 cur_cross 567 best_cross 562
mincross: pass 2 iter 8 trying 4 cur_cross 562 best_cross 562
mincross: pass 2 iter 9 trying 5 cur_cross 569 best_cross 562
mincross: pass 2 iter 10 trying 6 cur_cross 592 best_cross 562
mincross: pass 2 iter 11 trying 7 cur_cross 567 best_cross 562
mincross: pass 2 iter 12 trying 8 cur_cross 562 best_cross 562
mincross g: 562 crossings, 0.49 secs.

Input file: b15.dot
Fix:
Sorry, I only downloaded the ready-made executable.

[north] well, i made a fix that allows it to run to completion. it complains about a lot of missing edges in the output. i think they just were concentrated into non-existence but there ought to be some code to specifically check for that somehow.
Owner: north
Status: Fixed.