_pings_since_last_response has a length of 700,000+ in some of those connections
ogd
lol
beaujingles
and it allocates a string and concatenates them all each time Connection::UpdateState
two bugs really… one is that it gets into that state to begin with
the second is that it does all of that debug print preparation when VERBOSE isn’t even set, so it’s not even printing the result!
ogd
wow
beaujingles: so its just in a debug message function lol
beaujingles
haha yeah, 97% cpu in string concatenation for a message that’s never printed
ogd
omg
epic
beaujingles
(though i’m sure having 700,000+ unresponded pings tracked in std::vectors throughout a bunch of connections is bad for memory/perf too!)
karissa
wowwww
epic facepalm moment
ogd
beaujingles: i wonder why our use case noticed it and nobody else has
beaujingles
:D
ogd
prob cause we have lots of connections and keep it open a long time?
beaujingles
ogd: the mesh topology maybe? or, could be that it’s specific to simplepeer? long-lived connections?
ogd
yea maybe nobody is really doing long lived data channels yet
beaujingles
since i recompiled everything i did notice that it took longer to occur… whether that’s because of fewer peers or changed code i’m not sure, took a couple days to get really high though
ogd: i think its fine - i'd prefer to add that in a later version though (just to do fewer things and its just the view so its easily regenerated)
ogd
mafintosh: k
beaujingles
ogd: only place it’s ever cleared is OnConnectionRequestResponse
mafintosh
beaujingles: just catching up to your libjingle adventure
fun stuff!
beaujingles
hehe yeah
ogd
beaujingles: hmm so why "all the connections i saw had a normal number of unresponded pings, like 5"? shouldnt the number be super high even if the logging stuff was disabled?
beaujingles
ogd: that’s before it gets into the bad state
just saying that the bad state can maybe happen suddenly?
ogd
beaujingles: ah ok
beaujingles
also i just printed the next 50 breakpoints, so could have missed a connection with more
going to make this process dump a core to study further
was kind of disappointed that lldb seems to have worse STL support than gdb, it couldn’t figure out the length of the std::vector correctly
ogd
beaujingles: are you gonna open a libjingle bug for the logging issue?
beaujingles: awesome work btw, that bug is quite the deal breaker
beaujingles
hehe it totally nerd sniped me
ogd
haha
worth it though
beaujingles
yeah for sure, glad i found a root case for the CPU, still unsure on the root cause for it getting into that state though but i think i have enough to open bugs for both
ogd
beaujingles: yea agreed
yoshuawuyts has quit
pfraze joined the channel
mafintosh: hey so i tried out that python rabin thing
mafintosh: ori might be the closest thing to dat i've seen actually
random quote from the internet "This idea of analyzing history and looking for evidence about the pedigree of a change is a classic Version Control topic, the sort of thing that practitioners spend all their waking hours contemplating. It's enormously powerful, but devilishly intricate in the details."
i'm having some trouble wrapping his head around the idea of a stream of messages that itself makes a valid protobuf message
mafintosh: isn't it the case that the message encoded by the stream will only be valid if there was an entry in the schema that defined a message built up of just repeated elements in the stream?