Overview
Artifact ID: | 7482ba2d8051e688a490990686c745d56b540985 |
---|---|
Ticket: | 99c02b9520069c3ecd4bc55ae3c5137488dcf15e
iocmd-21.21 segfault demo & more |
User & Date: | dgp 2014-04-21 18:56:20 |
Changes
- assignee changed to: "dgp"
- closedate changed to: "2456769.28912478"
- closer changed to: "dgp"
- comment changed to:
New test iocmd-21.21 demonstrates a segfault. It's worse than that though. It demonstrates that reflected channels expose (create?) the ability to close a channel in the midst of operations on it. This means things can disappear, deallocate, invalidate, and go away, when everything in progress is assuming that will not happen. One particular problem is the routine ReflectInput(..., char *buf, int toRead, int *errorCodePtr); The buf pointer value passed in is where RI() is meant to write the bytes it reads. However the InvokeTclMethod() call inside RI() has the power to free that memory. iocmd-21.21 demonstrates this (and other problems), and valgrind will indeed report the "Invalid write" attempt. A number of potential solutions can be imagined, but they all seem unpleasant. Comments?
- icomment: "Fixed in 8.5 branch."
- login: "dgp"
- mimetype: "text/plain"
- resolution changed to: "Fixed"
- status changed to: "Closed"