Changes between Initial Version and Version 1 of Ticket #24986, comment 34


Ignore:
Timestamp:
03/16/18 16:15:46 (4 years ago)
Author:
embray
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #24986, comment 34

    initial v1  
    11Maybe I haven't explained the issue well enough.  The bug has everything to do with the integer pool.  Of course, as you say, there are many contexts where an interrupt could leave a datastructure in an incomplete state, as is happening here with the `mpz_t`s.
    22
    3 This isn't usually a problem, because in most cases we have Cysignals turned on, which means an exception is raised and, in most cases (but not all--therein is still a problem) the computation is aborted and the relevant datastructures are cleaned up anyways and it doesn't entirely matter if they're consistent or not.
     3This isn't usually a problem, because in most cases we have Cysignals turned on, which means an exception is raised and, in most cases (but not all--therein is still a problem) the computation is aborted and the relevant datastructures are cleaned up anyways and it doesn't entirely matter if they're consistent or not (here there is still a potential for double-frees and the like, and that would be a bug too, albeit a slightly different one).
    44
    55When it comes to the integer pool that's not the case, because instead of completely cleaning up and destroying the relevant data structures, we're always assuming that when an `Integer` is returned to the pool that it's in a sane, consistent state (or at the very least, that its `_mp_d` pointer is still valid).  And that's clearly not the case.