1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | EDM X/Y Plot segfaults |
From: | Eric Norum <[email protected]> |
To: | EPICS Tech-Talk <[email protected]>, "Sinclair, John William" <[email protected]> |
Cc: | Gregory Portmann <[email protected]>, Michael Chin <[email protected]> |
Date: | Wed, 9 May 2018 10:28:41 -0700 |
Displaying X/Y data in EDM on OS X and Linux often results in a segmentation fault. Here’s where the fault occurs: Program received signal SIGSEGV, Segmentation fault. 0x00007ffff1f16f3c in xyGraphClass::genChronoVector (this=0x96c6f0, i=0, rescale=0x7fffffffc2ec) at ../xygraph.cc:6344 6344 dyValue = ( (double *) yPvData[i] )[ii]; (gdb) where #0 0x00007ffff1f16f3c in xyGraphClass::genChronoVector (this=0x96c6f0, i=0, rescale=0x7fffffffc2ec) at ../xygraph.cc:6344 #1 0x00007ffff1f1c186 in xyGraphClass::executeDeferred (this=0x96c6f0) at ../xygraph.cc:9599 #2 0x00007ffff7afe07d in activeWindowClass::processObjects (this=0x927880) at ../act_win.cc:22289 #3 0x00007ffff7af5858 in appContextClass::applicationLoop (this=0x636d20) at ../app_pkg.cc:6592 #4 0x0000000000405562 in main (argc=<value optimized out>, argv=<value optimized out>) at ../main.cc:2806 (gdb) list 6339 else { 6340 dyValue = (double) ( (unsigned short *) yPvData[i] )[ii]; 6341 } 6342 break; 6343 default: 6344 dyValue = ( (double *) yPvData[i] )[ii]; 6345 break; 6346 } 6347 6348 if ( y1AxisStyle[yi] == XYGC_K_AXIS_STYLE_LOG10 ) { (gdb) print yPvData $3 = {0x0 <repeats 20 times>} (gdb) print &yPvData $4 = (void *(*)[20]) 0x96f240 (gdb) print i $5 = 0 (gdb) print yPvData[0] $6 = (void *) 0x0 (gdb) For some reason yPvData is full of null pointers which results in a segfault when dereferenced by the [ii] subscript. Any ideas why this happens sometimes? I can get a good display maybe two or three times in a row and then get the segfault. Eric Norum |