Opened 16 years ago

Closed 16 years ago

#81 closed defect (fixed)

fix the WEIRD log message in Tub.connectorFinished

Reported by: Brian Warner Owned by:
Priority: major Milestone: 0.4.2
Component: unknown Version: 0.2.5
Keywords: Cc:

Description (last modified by Brian Warner)

source:foolscap/pb.py@5d5860ccef21#L568 is a WEIRD-level log event that I see happening all the time. Because it's at the WEIRD level, it triggers Incidents, so I'd like to nail down why it is happening and fix it.

Attachments (1)

incident-2009-02-02-152232-wbugxwy.flog.bz2 (22.1 KB) - added by Zooko 16 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 Changed 16 years ago by Brian Warner

Description: modified (diff)
Milestone: undecided0.3.0

comment:2 Changed 16 years ago by Brian Warner

it looks like this is happening when two parallel connections are made to separate connection hints of the same remote target (one to 127.0.0.1, the other to an external IP address), and the 127.0.0.1 connection wins, and the other not-yet-established connection is abandoned.

This suggests that TubConnector.connect has not been called yet, which seems unlikely because the only place a TubConnector is created is in Tub.getBrokerForTubRef, which calls connect() just after the constructor.

comment:3 Changed 16 years ago by Brian Warner

Milestone: 0.3.10.3.2

Or, more likely, connectorFinished() is being called twice for the same connector. checkForIdle() is called from several different points, so that's the most likely culprit.

I've added some more logging to this, just to record which tubconnector is being dropped. The next time this happens in my tahoe tests, I should be able to track down the double-call.

comment:4 Changed 16 years ago by Brian Warner

Milestone: 0.3.30.4.0

comment:5 Changed 16 years ago by Brian Warner

Resolution: fixed
Status: newclosed

Resolved by [b9bc4a40679e86f2f15c407ec85ff4be5e6c6601]. I decided to ignore it, and remove the warning. I added code that was likely to cause a double-free anyways, and rather than spend a lot of time trying to avoid that, I just changed the code to be tolerant.

Note: See TracTickets for help on using tickets.