Crash in [@ mozilla::net::Http3Session::ProcessInput]
Categories
(Core :: Networking: HTTP, defect, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr78 | --- | unaffected |
firefox-esr91 | --- | wontfix |
firefox87 | --- | unaffected |
firefox88 | --- | wontfix |
firefox89 | --- | wontfix |
firefox93 | --- | wontfix |
firefox94 | --- | wontfix |
firefox95 | --- | fixed |
People
(Reporter: aryx, Assigned: valentin)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: crash, regression)
Crash Data
Attachments
(1 file)
4 crashes on 2+ devices, all on Windows 10
Crash report: https://crash-stats.mozilla.org/report/index/24b0dd56-4154-4319-a431-d090f0210331
MOZ_CRASH Reason: MOZ_DIAGNOSTIC_ASSERT(false) (NS_SUCCEEDED(rv))
Top 10 frames of crashing thread:
0 xul.dll mozilla::net::Http3Session::ProcessInput netwerk/protocol/http/Http3Session.cpp:325
1 xul.dll mozilla::net::Http3Session::RecvData netwerk/protocol/http/Http3Session.cpp:1149
2 xul.dll mozilla::net::HttpConnectionUDP::RecvData netwerk/protocol/http/HttpConnectionUDP.cpp:544
3 xul.dll mozilla::net::HttpConnectionUDP::OnPacketReceived netwerk/protocol/http/HttpConnectionUDP.cpp:646
4 xul.dll mozilla::net::nsSocketTransportService::Run netwerk/base/nsSocketTransportService2.cpp:1160
5 xul.dll nsThread::ProcessNextEvent xpcom/threads/nsThread.cpp:1145
6 xul.dll mozilla::ipc::MessagePumpForNonMainThreads::Run ipc/glue/MessagePump.cpp:302
7 xul.dll MessageLoop::RunHandler ipc/chromium/src/base/message_loop.cc:328
8 xul.dll MessageLoop::Run ipc/chromium/src/base/message_loop.cc:310
9 xul.dll static nsThread::ThreadFunc xpcom/threads/nsThread.cpp:391
Comment 1•3 years ago
|
||
This is failing because rust parser of an IP address in form of a string fails.
The protocol will handle just fine some of the packets being dropet for his reason.
I will leave this as a diagnostic assert, and I will lot to change c++-rust glue code a bit to mitigate this problem if possible.
Updated•3 years ago
|
Updated•3 years ago
|
Assignee | ||
Updated•3 years ago
|
Assignee | ||
Comment 2•3 years ago
|
||
It seems the result of AddrToString
when the assertion happens here is ?:443
- which obviously doesn't parse as an IP addr.
Now I'm trying to figure out where the ?
is coming from 🙂
Assignee | ||
Comment 3•3 years ago
|
||
From what I can tell the ?
is coming from getnameinfo via inet_ntop_internal.
From what I can tell, because we pass NI_NUMERICHOST
, this should never happen.
Maybe a bug in the getnameinfo implementation on windows?
In any case, the steps here seem to be:
- Pass NetAddr/SockAddr to and from rust, instead of parsing the IP on every call.
- Use a native serialization of NetAddr to avoid said bug (if it exists) in a follow-up bug.
Assignee | ||
Comment 4•3 years ago
|
||
It seems that the serialization generated by inet_ntop_internal via
getnameinfo is sometimes wrong, returning ?
instead of serializing the
IP we pass in.
It's also inefficient to keep passing the serialization to and from rust
code - instead it's much easier to just pass a pointer to the NetAddr
union and build a proper SocketAddr instance on the rust side from
from the bytes instead of parsing the serialization
Pushed by valentin.gosu@gmail.com: https://hg.mozilla.org/integration/autoland/rev/ba94ff2a7696 Pass NetAddr pointers to rust instead of a serialization r=necko-reviewers,dragana
Assignee | ||
Updated•3 years ago
|
Pushed by valentin.gosu@gmail.com: https://hg.mozilla.org/integration/autoland/rev/241563557fd4 Pass NetAddr pointers to rust instead of a serialization r=necko-reviewers,dragana
Comment 8•3 years ago
|
||
bugherder |
Updated•3 years ago
|
Updated•3 years ago
|
Description
•