Tcl Source Code

Ticket Change Details
Login
Overview

Artifact ID: 7482ba2d8051e688a490990686c745d56b540985
Ticket: 99c02b9520069c3ecd4bc55ae3c5137488dcf15e
iocmd-21.21 segfault demo & more
User & Date: dgp 2014-04-21 18:56:20
Changes

  1. assignee changed to: "dgp"
  2. closedate changed to: "2456769.28912478"
  3. closer changed to: "dgp"
  4. 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?
    
  5. icomment: "Fixed in 8.5 branch."
  6. login: "dgp"
  7. mimetype: "text/plain"
  8. resolution changed to: "Fixed"
  9. status changed to: "Closed"