Package: graphviz Version: 2.2.1-1 Severity: important Not sure whether it is connected to 305375, but I don't know how to work arround the segfault, it's very anoying and I can't work with it. obviously there is memory mishandling somewhere. valgrind can locate the illegal segment read in the code, it should be easy to find and fix with debug info built in. I attach the dot file, verbose dot output and valgrind output. The bug is reproducable via command line: dot -Tps -ocompressor.ps compressor.dot
(I tried different formats, but it breaks no matter which). thanks! -- System Information: Debian Release: testing/unstable APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.11-1-686 Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Versions of packages graphviz depends on: hi libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an ii libexpat1 1.95.8-3 XML parsing C library - runtime li ii libfontconfig1 2.3.2-1 generic font configuration library ii libfreetype6 2.1.10-1 FreeType 2 font engine, shared lib ii libice6 6.8.2.dfsg.1-4 Inter-Client Exchange library ii libjpeg62 6b-10 The Independent JPEG Group's JPEG ii libpng12-0 1.2.8rel-1 PNG library - runtime ii libsm6 6.8.2.dfsg.1-4 X Window System Session Management ii libx11-6 6.8.2.dfsg.1-4 X Window System protocol client li ii libxaw7 6.8.2.dfsg.1-4 X Athena widget set library ii libxext6 6.8.2.dfsg.1-4 X Window System miscellaneous exte ii libxmu6 6.8.2.dfsg.1-4 X Window System miscellaneous util ii libxpm4 6.8.2.dfsg.1-4 X pixmap library ii libxt6 6.8.2.dfsg.1-4 X Toolkit Intrinsics ii tcl8.4 8.4.9-1 Tcl (the Tool Command Language) v8 ii tk8.4 8.4.9-1 Tk toolkit for Tcl and X11, v8.4 - ii xlibs 6.8.2.dfsg.1-4 X Window System client libraries m ii zlib1g 1:1.2.3-1 compression library - runtime graphviz recommends no packages. -- no debconf information
digraph ______iut_compressor_xml { model=subset; remincross=true; subgraph cluster_ENV { node [shape=ellipse,style=filled,fillcolor=lightgray]; ENV_Action; ENV_DefrostGen; ENV_INIT; ENV_TempGen; ENV_TemperatureReporter; ENV_TemperatureSinus1; node [style="",shape=ellipse,color=blue,peripheries=2]; ENV_CT; ENV_TADelay; ENV_setPoint; highStop; lowStop; startupDelay; delay; defrostSwitchDelay; highAlarmDev; } subgraph cluster_IUT { node [shape=ellipse,style=filled,fillcolor=lightgray]; IUT_ActionHandler; IUT_AutoDefrost; IUT_Compressor; IUT_Defrost; IUT_HighTemperatureAlarm; IUT_INIT; IUT_TemperatureMeasurementErr; IUT_TemperatureReceiver; IUT_alarmRelay; IUT_compressorRelay; IUT_defrostRelay; IUT_highAlarmDisplay; node [style="",shape=ellipse,color=blue,peripheries=2]; IUT_CT; IUT_TADelay; IUT_calcTemp; IUT_setPoint; diff; err; compressorSwitchDelay; samplePeriod; defrostPeriod; defrostTime; fixedTemp; defrosting; defrostAlarmDelay; alarmSwitchDelay; on; t_defrostDuration; } subgraph cluste_vars { style=invis; node [shape=ellipse,color=blue,peripheries=2]; t_defrostPeriod; } startupDelay -> ENV_INIT; ENV_INIT -> ENV_TADelay [style=bold]; ENV_INIT -> ENV_setPoint [style=bold]; ENV_INIT -> t_defrostPeriod [style=bold]; ENV_CT -> ENV_TemperatureSinus1; delay -> ENV_TemperatureSinus1; highStop -> ENV_TemperatureSinus1; lowStop -> ENV_TemperatureSinus1; ENV_TemperatureSinus1 -> ENV_CT [style=bold]; ENV_TADelay -> ENV_TempGen; ENV_TempGen -> highStop [style=bold]; ENV_TempGen -> lowStop [style=bold]; ENV_CT -> IUT_TemperatureReceiver; IUT_TemperatureReceiver -> IUT_CT [style=bold]; IUT_CT -> IUT_TemperatureMeasurementErr; IUT_calcTemp -> IUT_TemperatureMeasurementErr; fixedTemp -> IUT_TemperatureMeasurementErr; samplePeriod -> IUT_TemperatureMeasurementErr; IUT_TemperatureMeasurementErr -> IUT_calcTemp [style=bold]; IUT_calcTemp -> IUT_Compressor; IUT_setPoint -> IUT_Compressor; defrosting -> IUT_Compressor; diff -> IUT_Compressor; err -> IUT_Compressor; on -> IUT_Compressor; IUT_Compressor -> on [style=bold]; compressorSwitchDelay -> IUT_compressorRelay; alarmSwitchDelay -> IUT_alarmRelay; ENV_setPoint -> IUT_ActionHandler; IUT_ActionHandler -> IUT_setPoint [style=bold]; alarmSwitchDelay -> IUT_highAlarmDisplay; IUT_TADelay -> IUT_HighTemperatureAlarm; IUT_calcTemp -> IUT_HighTemperatureAlarm; IUT_setPoint -> IUT_HighTemperatureAlarm; diff -> IUT_HighTemperatureAlarm; err -> IUT_HighTemperatureAlarm; highAlarmDev -> IUT_HighTemperatureAlarm; defrostPeriod -> IUT_AutoDefrost; t_defrostPeriod -> IUT_AutoDefrost; IUT_AutoDefrost -> t_defrostPeriod [style=bold]; defrostAlarmDelay -> IUT_Defrost; defrostTime -> IUT_Defrost; t_defrostDuration -> IUT_Defrost; IUT_Defrost -> defrosting [style=bold]; IUT_Defrost -> on [style=bold]; IUT_Defrost -> t_defrostDuration [style=bold]; defrostSwitchDelay -> IUT_defrostRelay; ENV_TADelay -> IUT_INIT; ENV_setPoint -> IUT_INIT; fixedTemp -> IUT_INIT; IUT_INIT -> IUT_TADelay [style=bold]; IUT_INIT -> IUT_calcTemp [style=bold]; IUT_INIT -> IUT_setPoint [style=bold]; ENV_INIT -> IUT_INIT [label="EKCReset"]; ENV_INIT -> IUT_ActionHandler [label="setAlarmDelay"]; ENV_INIT -> IUT_INIT [label="setAlarmDelay"]; ENV_INIT -> IUT_ActionHandler [label="setEKCPars"]; ENV_INIT -> IUT_ActionHandler [label="setPoint"]; ENV_INIT -> IUT_INIT [label="setPoint"]; ENV_TemperatureSinus1 -> ENV_TempGen [label="highDone"]; NO_DEST [style=filled,fillcolor=red]; ENV_TemperatureSinus1 -> NO_DEST [label="lowDone"]; ENV_TemperatureSinus1 -> ENV_TemperatureReporter [label="reportTemp"]; ENV_TemperatureReporter -> IUT_TemperatureReceiver [label="CT"]; ENV_TemperatureReporter -> ENV_TemperatureSinus1 [label="reportDone"]; ENV_TempGen -> ENV_TemperatureSinus1 [label="_continue"]; ENV_TempGen -> IUT_ActionHandler [label="alarmReset"]; ENV_DefrostGen -> IUT_Defrost [label="manualDefrostOff"]; ENV_DefrostGen -> IUT_Defrost [label="manualDefrostOn"]; IUT_TemperatureReceiver -> IUT_TemperatureMeasurementErr [label="receivedTemp"]; IUT_TemperatureMeasurementErr -> IUT_Compressor [label="newTemp"]; IUT_TemperatureMeasurementErr -> IUT_HighTemperatureAlarm [label="newTemp"]; IUT_Compressor -> IUT_compressorRelay [label="COff"]; IUT_Compressor -> IUT_compressorRelay [label="COn"]; IUT_compressorRelay -> ENV_Action [label="compressorRelayOff"]; IUT_compressorRelay -> ENV_Action [label="compressorRelayOn"]; IUT_alarmRelay -> ENV_INIT [label="alarmRelayOff"]; IUT_alarmRelay -> ENV_Action [label="alarmRelayOff"]; IUT_alarmRelay -> ENV_Action [label="alarmRelayOn"]; IUT_ActionHandler -> IUT_HighTemperatureAlarm [label="clearHighAlarm"]; IUT_ActionHandler -> ENV_Action [label="compressorRelayOff"]; IUT_ActionHandler -> ENV_Action [label="compressorRelayOn"]; IUT_ActionHandler -> ENV_Action [label="highAlarmDisplayOff"]; IUT_ActionHandler -> ENV_Action [label="highAlarmDisplayOn"]; IUT_highAlarmDisplay -> ENV_Action [label="highAlarmDisplayOff"]; IUT_highAlarmDisplay -> ENV_Action [label="highAlarmDisplayOn"]; IUT_HighTemperatureAlarm -> IUT_alarmRelay [label="AOff"]; IUT_HighTemperatureAlarm -> IUT_alarmRelay [label="AOn"]; IUT_HighTemperatureAlarm -> IUT_highAlarmDisplay [label="HADOff"]; IUT_HighTemperatureAlarm -> IUT_highAlarmDisplay [label="HADOn"]; IUT_AutoDefrost -> IUT_Defrost [label="autoDefrostOn"]; IUT_Defrost -> IUT_compressorRelay [label="COff"]; IUT_Defrost -> IUT_defrostRelay [label="DOff"]; IUT_Defrost -> IUT_defrostRelay [label="DOn"]; IUT_Defrost -> IUT_HighTemperatureAlarm [label="noDefrostDelay"]; IUT_defrostRelay -> ENV_Action [label="defrostRelayOff"]; IUT_defrostRelay -> ENV_Action [label="defrostRelayOn"]; IUT_INIT -> ENV_INIT [label="alarmRelayOff"]; IUT_INIT -> ENV_Action [label="alarmRelayOff"]; IUT_INIT -> IUT_TemperatureMeasurementErr [label="initDone"]; IUT_INIT -> IUT_Compressor [label="initDone"]; IUT_INIT -> IUT_compressorRelay [label="initDone"]; IUT_INIT -> IUT_alarmRelay [label="initDone"]; IUT_INIT -> IUT_ActionHandler [label="initDone"]; IUT_INIT -> IUT_highAlarmDisplay [label="initDone"]; IUT_INIT -> IUT_HighTemperatureAlarm [label="initDone"]; IUT_INIT -> IUT_AutoDefrost [label="initDone"]; IUT_INIT -> IUT_Defrost [label="initDone"]; IUT_INIT -> IUT_defrostRelay [label="initDone"]; IUT_INIT -> ENV_INIT [label="initDone"]; IUT_INIT -> ENV_Action [label="initDone"]; IUT_INIT -> ENV_TempGen [label="initDone"]; IUT_INIT -> ENV_DefrostGen [label="initDone"]; }
dot: fontname=Times-Roman fontpath=/usr/X11R6/lib/X11/fonts/Type1/n021003l.pfm network simplex: 1 nodes 0 edges 0 iter 0.00 sec network simplex: 1 nodes 0 edges 0 iter 0.00 sec network simplex: 11 nodes 12 edges 0 iter 0.00 sec network simplex: 1 nodes 0 edges 0 iter 0.00 sec network simplex: 1 nodes 0 edges 0 iter 0.00 sec network simplex: 28 nodes 51 edges 2 iter 0.00 sec network simplex: 43 nodes 78 edges 18 iter 0.00 sec mincross: pass 0 iter 0 trying 0 cur_cross 13112 best_cross 13112 mincross: pass 0 iter 1 trying 1 cur_cross 1014043 best_cross 13112 mincross: pass 0 iter 2 trying 2 cur_cross 1011073 best_cross 13112 mincross: pass 0 iter 3 trying 3 cur_cross 1010048 best_cross 13112 mincross: pass 1 iter 0 trying 0 cur_cross 16164 best_cross 13112 mincross: pass 1 iter 1 trying 1 cur_cross 1020025 best_cross 13112 mincross: pass 1 iter 2 trying 0 cur_cross 10088 best_cross 10088 mincross: pass 1 iter 3 trying 0 cur_cross 5058 best_cross 5058 mincross: pass 2 iter 0 trying 0 cur_cross 5058 best_cross 5058 mincross: pass 2 iter 1 trying 1 cur_cross 1017020 best_cross 5058 mincross: pass 2 iter 2 trying 2 cur_cross 1009043 best_cross 5058 mincross: pass 2 iter 3 trying 3 cur_cross 1008041 best_cross 5058 mincross: pass 2 iter 4 trying 4 cur_cross 1008041 best_cross 5058 mincross: pass 2 iter 5 trying 5 cur_cross 1017040 best_cross 5058 mincross: pass 2 iter 6 trying 6 cur_cross 1016024 best_cross 5058 mincross: pass 2 iter 7 trying 7 cur_cross 1014015 best_cross 5058 mincross: pass 2 iter 8 trying 8 cur_cross 1014015 best_cross 5058 merge2: graph ______iut_compressor_xml, rank 0 has only 1 < 2 nodes merge2: graph ______iut_compressor_xml, rank 1 has only 3 < 6 nodes merge2: graph ______iut_compressor_xml, rank 2 has only 3 < 8 nodes merge2: graph ______iut_compressor_xml, rank 3 has only 14 < 31 nodes merge2: graph ______iut_compressor_xml, rank 4 has only 12 < 30 nodes merge2: graph ______iut_compressor_xml, rank 5 has only 31 < 49 nodes merge2: graph ______iut_compressor_xml, rank 6 has only 20 < 34 nodes merge2: graph ______iut_compressor_xml, rank 7 has only 20 < 46 nodes merge2: graph ______iut_compressor_xml, rank 8 has only 13 < 29 nodes merge2: graph ______iut_compressor_xml, rank 9 has only 13 < 30 nodes merge2: graph ______iut_compressor_xml, rank 10 has only 6 < 12 nodes merge2: graph ______iut_compressor_xml, rank 11 has only 6 < 16 nodes merge2: graph ______iut_compressor_xml, rank 12 has only 4 < 9 nodes merge2: graph ______iut_compressor_xml, rank 13 has only 3 < 7 nodes merge2: graph ______iut_compressor_xml, rank 15 has only 4 < 7 nodes merge2: graph ______iut_compressor_xml, rank 16 has only 2 < 3 nodes mincross: pass 2 iter 0 trying 0 cur_cross 5094 best_cross 5094 mincross: pass 2 iter 1 trying 1 cur_cross 5080 best_cross 5080 mincross: pass 2 iter 2 trying 2 cur_cross 5076 best_cross 5076 mincross: pass 2 iter 3 trying 3 cur_cross 5076 best_cross 5076 mincross: pass 2 iter 4 trying 4 cur_cross 5076 best_cross 5076 mincross: pass 2 iter 5 trying 5 cur_cross 5076 best_cross 5076 mincross: pass 2 iter 6 trying 6 cur_cross 5076 best_cross 5076 mincross: pass 2 iter 7 trying 7 cur_cross 5076 best_cross 5076 mincross: pass 2 iter 8 trying 8 cur_cross 5076 best_cross 5076 mincross: pass 2 iter 0 trying 0 cur_cross 668 best_cross 668 mincross: pass 2 iter 1 trying 0 cur_cross 489 best_cross 489 mincross: pass 2 iter 2 trying 0 cur_cross 394 best_cross 394 mincross: pass 2 iter 3 trying 0 cur_cross 363 best_cross 363 mincross: pass 2 iter 4 trying 0 cur_cross 358 best_cross 358 mincross: pass 2 iter 5 trying 1 cur_cross 436 best_cross 358 mincross: pass 2 iter 6 trying 2 cur_cross 437 best_cross 358 mincross: pass 2 iter 7 trying 3 cur_cross 405 best_cross 358 mincross: pass 2 iter 8 trying 4 cur_cross 406 best_cross 358 mincross: pass 2 iter 9 trying 5 cur_cross 422 best_cross 358 mincross: pass 2 iter 10 trying 6 cur_cross 396 best_cross 358 mincross: pass 2 iter 11 trying 7 cur_cross 365 best_cross 358 mincross: pass 2 iter 12 trying 0 cur_cross 348 best_cross 348 mincross: pass 2 iter 13 trying 1 cur_cross 397 best_cross 348 mincross: pass 2 iter 14 trying 2 cur_cross 414 best_cross 348 mincross: pass 2 iter 15 trying 3 cur_cross 355 best_cross 348 mincross: pass 2 iter 16 trying 0 cur_cross 338 best_cross 338 mincross: pass 2 iter 17 trying 1 cur_cross 377 best_cross 338 mincross: pass 2 iter 18 trying 2 cur_cross 393 best_cross 338 mincross: pass 2 iter 19 trying 3 cur_cross 343 best_cross 338 mincross: pass 2 iter 20 trying 0 cur_cross 335 best_cross 335 mincross: pass 2 iter 21 trying 1 cur_cross 399 best_cross 335 mincross: pass 2 iter 22 trying 2 cur_cross 389 best_cross 335 mincross: pass 2 iter 23 trying 0 cur_cross 326 best_cross 326 mincross: pass 2 iter 0 trying 0 cur_cross 312 best_cross 312 mincross: pass 2 iter 1 trying 1 cur_cross 314 best_cross 312 mincross: pass 2 iter 2 trying 2 cur_cross 323 best_cross 312 mincross: pass 2 iter 3 trying 3 cur_cross 319 best_cross 312 mincross: pass 2 iter 4 trying 4 cur_cross 313 best_cross 312 mincross: pass 2 iter 5 trying 5 cur_cross 313 best_cross 312 mincross: pass 2 iter 6 trying 6 cur_cross 316 best_cross 312 mincross: pass 2 iter 7 trying 7 cur_cross 318 best_cross 312 mincross: pass 2 iter 8 trying 8 cur_cross 313 best_cross 312 mincross ______iut_compressor_xml: 311 crossings, 0.02 secs. network simplex: 100 200 300 network simplex: 700 nodes 1133 edges 311 iter 0.05 sec
==9257== Memcheck, a memory error detector for x86-linux. ==9257== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al. ==9257== Using valgrind-2.4.1, a program supervision framework for x86-linux. ==9257== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al. ==9257== For more details, rerun with: -v ==9257== ==9257== Invalid read of size 4 ==9257== at 0x1BAFAFD5: (within /usr/lib/graphviz/libdotgen.so.0.0.0) ==9257== by 0x1BAFA775: dot_splines (in /usr/lib/graphviz/libdotgen.so.0.0.0) ==9257== by 0x1BAF2129: dot_layout (in /usr/lib/graphviz/libdotgen.so.0.0.0) ==9257== by 0x8048929: (within /usr/bin/dot) ==9257== by 0x1BB6096F: __libc_start_main (in /lib/tls/i686/cmov/libc-2.3.2.so) ==9257== by 0x8048790: (within /usr/bin/dot) ==9257== Address 0x94 is not stack'd, malloc'd or (recently) free'd ==9257== ==9257== Process terminating with default action of signal 11 (SIGSEGV) ==9257== Access not within mapped region at address 0x94 ==9257== at 0x1BAFAFD5: (within /usr/lib/graphviz/libdotgen.so.0.0.0) ==9257== by 0x1BAFA775: dot_splines (in /usr/lib/graphviz/libdotgen.so.0.0.0) ==9257== by 0x1BAF2129: dot_layout (in /usr/lib/graphviz/libdotgen.so.0.0.0) ==9257== by 0x8048929: (within /usr/bin/dot) ==9257== by 0x1BB6096F: __libc_start_main (in /lib/tls/i686/cmov/libc-2.3.2.so) ==9257== by 0x8048790: (within /usr/bin/dot) ==9257== ==9257== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 49 from 1) ==9257== malloc/free: in use at exit: 929858 bytes in 10665 blocks. ==9257== malloc/free: 334463 allocs, 323798 frees, 60880528 bytes allocated. ==9257== For counts of detected errors, rerun with: -v ==9257== searching for pointers to 10665 not-freed blocks. ==9257== checked 1368352 bytes. ==9257== ==9257== LEAK SUMMARY: ==9257== definitely lost: 45802 bytes in 529 blocks. ==9257== possibly lost: 0 bytes in 0 blocks. ==9257== still reachable: 884056 bytes in 10136 blocks. ==9257== suppressed: 0 bytes in 0 blocks. ==9257== Use --leak-check=full to see details of leaked memory.