Type | Bug | Status | built | Date | 19-Feb-2014 18:07 |
---|---|---|---|---|---|
Version | r3 master | Category | Ports | Submitted by | abolka |
Platform | All | Severity | crash | Priority | high |
Summary | Potential problem: do we have to protect ports from GC which are pointed to via the linked list of pending requests |
---|---|
Description |
Quoting from HostileFork's pull request 158: > While looking at the REBREQ field, I noticed a ->next field for a > linked list of more REBREQs. As the previous problem had come from > a port being GC'd out from under a REBREQ, I was concerned that > these other requests might be holding ports that were similarly > unaccounted for. @earl explained that if a request had made it > into an event, then it had been processed and the ->next field > would be NULL. The ->next field was only used by REBDEV devices > when holding requests in a pending queue. In a "better safe than > sorry" philosophy I added a Mark_Pending_Requests() function to > walk the pending queue for the devices during a Recycle() and mark > the ports they hold as used... it does pick up some ports, so this > could well be an issue. However the current layering doesn't > support a way to cleanly get at devices pending queues from the GC > so the "unclean" code is under #if NEED_TO_MARK_PENDING_REQUESTS ;; Source: https://github.com/rebol/rebol/pull/158 While the primary bug addressed by pull request #158 has now been fixed, this potential issue still needs to be investigated. If the pending requests need to be traversed and associated ports marked to protect them from GC, we need to clean up the layering so that this can be implemented cleanly. If traversing the pending requests is not necessary, a few documenting remarks should be added in the code to explain why it is not necessary. |
Example code |
Assigned to | n/a | Fixed in | r3 master | Last Update | 6-Mar-2014 23:22 |
---|
Comments | |
---|---|
(0004260)
BrianH 21-Feb-2014 02:32 |
This appears to related or a fix of this: https://github.com/rebol/rebol/pull/188 |
(0004264)
Ladislav 21-Feb-2014 09:19 |
Related tickets: #1642, #1784, #2032 |
Date | User | Field | Action | Change |
---|---|---|---|---|
6-Mar-2014 23:22 | abolka | Fixedin | Modified | => r3 master |
6-Mar-2014 23:22 | abolka | Status | Modified | pending => built |
21-Feb-2014 09:51 | Ladislav | Priority | Modified | normal => high |
21-Feb-2014 09:49 | Ladislav | Type | Modified | Issue => Bug |
21-Feb-2014 09:19 | Ladislav | Comment : 0004264 | Added | - |
21-Feb-2014 09:11 | Ladislav | Severity | Modified | minor => crash |
21-Feb-2014 09:04 | Ladislav | Category | Modified | Unspecified => Ports |
21-Feb-2014 09:04 | Ladislav | Status | Modified | submitted => pending |
21-Feb-2014 02:32 | BrianH | Comment : 0004260 | Added | - |
19-Feb-2014 18:08 | abolka | Description | Modified | - |
19-Feb-2014 18:07 | abolka | Ticket | Added | - |