Forum Discussion
Deadlock while filling pipe for simulation
Hi Ric,
I did some testing, it dose looks like in emulation, a non-blocking read of a empty pipe causes crash. I will look into this problem.
Dose the crash happens to you in simulation? I was not able to reproduce the crash in simulation.
Thanks,
-Kevin
- Ric22 years ago
New Contributor
Hi Kevin,
I guess there are race conditions. I sporadically see issues in simulation too:
.../build$ ./streaming.fpga_sim Running on device: SimulatorDevice : Multi-process Simulator (aclmsim0) terminate called after throwing an instance of 'sycl::_V1::runtime_error' what(): Enqueue process failed. -59 (PI_ERROR_INVALID_OPERATION) Aborted (core dumped)Please check the host pipe write command in your code. Modify the core to not accept data at it's input for a longer time (backpressure condition). Then the host will throw an error when the pipe is full but the host write is not handling this properly.
To reproduce, just modify line 57:
57 // while (!end_of_packet) { 57 while (end_of_packet) { 58 // Read in next pixelAs the reproducer is a bit of artificial, I see this issue in our production design too.
I hope this helps you to find the root cause of these problems!
Regards, Ric.