Details
-
Bug
-
Resolution: Fixed
-
Major
-
3.1.2, 4.0.0, 4.0.1, 4.1.0, 4.5.0, 5.0.0
-
Security Level: Public
-
Untriaged
-
No
Description
- The stream_t is used by DcpBackfillTask and the DcpProducer, so at least 2 threads are accessing the value. stream_t is defined as a SingleThreadedRCPtr, not the concurrent-safe RCPtr
- ActiveStream, PassiveStream and NotifierStream use base pointers to DcpProducer/DcpConsumer yet can schedule background tasks which may access those pointers past the objects deletion.
- Change stream_t to RCPtr
- Add RCPtr's to the Stream classes so that the object deletion occurs once no one references the producer.