I see! It seems to be null indeed:
Thread 146 "Warp1_Plugin_1" hit Breakpoint 1, NDPluginWarp::processCallbacks (this=0x558584ea99f0, pArray=0x7ff1480424c0)
at ../NDPluginWarp.cpp:129
warning: Source file is more recent than executable.
129 NDPluginDriver::endProcessCallbacks(pOutput, true, true);
(gdb) x /p pArray->pData
0x7ff169270010: Undefined output format "p".
(gdb) x %p pArray->pData
A syntax error in _expression_, near `%p pArray->pData'.
(gdb) print pArray
$1 = (NDArray *) 0x7ff1480424c0
(gdb) print pOutput
$2 = (NDArray *) 0x0
(gdb)
I blindly copied this from NDWarp but i could swear that NDWarp used this parameter as true...
Anyway, i changed it to true and now im having a segfault. I tried printing the address both via code and via gdb. I added:
printf("%p\n",pArray);
I ran the IOC in gdb (Log appended in the end of this email) but it seems to me as a NULL pointer indeed.
What i dont understand is: NDWarp is looking at the SIM1 port from SimDetector. Why is copy failing?
The only thing i changed is that the frame size generated by ADSim is 3072x3072 pixels instead of 1024x1024. Should this matter?
GDB END LOG:
epics> [Thread 0x7f9f55267700 (LWP 13504) exited]
[Thread 0x7f9ff89c7700 (LWP 13503) exited]
[New Thread 0x7f9ff89c7700 (LWP 13506)]
[New Thread 0x7f9f55267700 (LWP 13507)]
[New Thread 0x7f9fa7b41700 (LWP 13508)]
[New Thread 0x7f9f55066700 (LWP 13509)]
[Thread 0x7f9f55066700 (LWP 13509) exited]
[Thread 0x7f9fa7b41700 (LWP 13508) exited]
[New Thread 0x7f9fa7b41700 (LWP 13510)]
[New Thread 0x7f9f55066700 (LWP 13511)]
[Thread 0x7f9fa7b41700 (LWP 13510) exited]
[Thread 0x7f9f55066700 (LWP 13511) exited]
a
(nil)
--Type <RET> for more, q to quit, c to continue without paging--
[Switching to Thread 0x7fa029d92b80 (LWP 13422)]
Thread 146 "Warp1_Plugin_1" hit Breakpoint 1, NDPluginWarp::processCallbacks (this=0x556321cd7930, pArray=0x7f9f3c0017a0) at ../NDPluginWarp.cpp:130
130 printf("%p\n",pArray);
(gdb) backtrace
#0 NDPluginWarp::processCallbacks (this=0x556321cd7930, pArray=0x7f9f3c0017a0) at ../NDPluginWarp.cpp:130
#1 0x00007fa02cb78b69 in NDPluginDriver::processTask (this=0x556321cd7930) at ../NDPluginDriver.cpp:524
#2 0x00007fa02c89545f in epicsThreadCallEntryPoint (pPvt=0x556321cd39a0) at ../../../src/libCom/osi/epicsThread.cpp:83
#3 0x00007fa02c89b4fb in start_routine (arg=0x556323c80530) at ../../../src/libCom/osi/os/posix/osdThread.c:403
#4 0x00007fa02ba9c609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#5 0x00007fa02c77d133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) frame 0
#0 NDPluginWarp::processCallbacks (this=0x556321cd7930, pArray=0x7f9f3c0017a0) at ../NDPluginWarp.cpp:130
130 printf("%p\n",pArray);
(gdb) info locals
info = {nElements = 9437184, bytesPerElement = 1, totalBytes = 9437184, colorMode = NDColorModeMono, xDim = 0, yDim = 1, colorDim = 0, xSize = 3072,
ySize = 3072, colorSize = 0, xStride = 1, yStride = 3072, colorStride = 0}
pOutput = 0x0
p = <optimized out>
__PRETTY_FUNCTION__ = "virtual void NDPluginWarp::processCallbacks(NDArray*)"