I'm having trouble debugging a mysterious (to me, at least) drop of a future::oneshot::channel::Receiver
. I've noticed because the corresponding sender would error out upon sending, and it seems to me the Receiver
is dropped at a point I did not expect.
I've stepped through with gdb, and got stuck on this line. When reaching this line, something weird is happening: GDB doesn't ever enter the match statement when stepping through, even in cases where everything's ok. Did I miss something, shouldn't those lines show up in gdb as well?
Now the problem I'm having happens in specific circumstances (a certain test, where the first time this function is called everything works out, and the second time I encounter this error), and the way I see it is this: The referenced line awaits for the sender to send something, so as far as I can tell the receiver should never drop before receiving something, right? Yet in the error case, the Sender
fails to send, and I've verified from the debug printout that the Inner
s complete
is true at that point indeed.
So, sorry if this is somewhat confusing, I'm trying to get a grip on what's happening. Is there a good way to really ascertain that the receiver dropping is the problem? The channel connects to futures, so cause and effect are a tad hard to separate.
Thanks for any pointers