-
Notifications
You must be signed in to change notification settings - Fork 129
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test: Add a test that repros servo/servo#13480 #179
Conversation
Thanks for the pull request, and welcome! The Servo team is excited to review your changes, and you should hear from @metajack (or someone else) soon. |
This is not for merge yet, until we find a fix. |
c758d28
to
1a3ab39
Compare
Btw @dlrobertson @antrik, in case you have any bright idea about this, it'd be definitely appreciated! STR are in rr-debugger/rr#2128. |
Something funny. With the following patch applied: diff --git a/src/test.rs b/src/test.rs
index 0a7e034..4cdce42 100644
--- a/src/test.rs
+++ b/src/test.rs
@@ -187,10 +187,12 @@ fn stress_in_process() {
}
thread::spawn(move || {
+ let mut alive = vec![];
loop {
match rx.recv().unwrap() {
Message::CloneApi(sender) => {
sender.send(0).unwrap();
+ alive.push(sender);
}
}
}
@@ -198,6 +200,7 @@ fn stress_in_process() {
for _ in 0..100000 {
let (one_shot_tx, one_shot_rx) = ipc::channel().expect("create");
+ let _tx_alive = one_shot_tx.clone();
api.send(Message::CloneApi(one_shot_tx)).expect("send");
let received = one_shot_rx.recv().expect("recv");
assert_eq!(received, 0); I consistently get an index out of bounds panic when deserializing the channel, which means that the channel hasn't arrived correctly. |
I suspect of the channel serialisation code... we'll see... |
Upon reflection I suspect we just run out of fds... |
Just ran the following and didn't hit any panics.
Is there anything else required to repro this? |
@emilio I can't reproduce it either. How exactly does it fail for you? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple of remarks on the actual test code.
BTW, the test is a bit on the slow side: on my system it takes almost two seconds in release mode, and about five in debug mode -- which is significantly longer than all the other tests combined...
src/test.rs
Outdated
@@ -158,6 +158,53 @@ fn cross_process_embedded_senders() { | |||
assert_eq!(received_person, person); | |||
} | |||
|
|||
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android", target_os = "ios")))] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you excluding the inprocess
back-end? I don't see any obvious reason why the test wouldn't apply there?
src/test.rs
Outdated
@@ -158,6 +158,53 @@ fn cross_process_embedded_senders() { | |||
assert_eq!(received_person, person); | |||
} | |||
|
|||
#[cfg(not(any(feature = "force-inprocess", target_os = "windows", target_os = "android", target_os = "ios")))] | |||
#[test] | |||
fn stress_in_process() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This name doesn't really tell me much about the test...
src/test.rs
Outdated
CloneApi(IpcSender<i32>), | ||
} | ||
|
||
impl Serialize for Message { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not very familiar with Serde, so this might be a silly question: but why do you need to implement these manually, rather than just deriving?
src/test.rs
Outdated
|
||
{ | ||
::std::mem::forget(api.clone()); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you doing this so the sub-thread lingers around rather than panicking when the test is done? That's not OK in my book... Just let the thread exit cleanly when it gets a "channel closed" notification.
In fact I think we should even join the thread explicitly after dropping the channel, just to be sure everything went fine and we don't leave any garbage around.
(Also, I'm not sure what the extra scope is supposed to do here?...)
src/test.rs
Outdated
}); | ||
|
||
for _ in 0..100000 { | ||
let (one_shot_tx, one_shot_rx) = ipc::channel().expect("create"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The naming is confusing IMHO, since you are not using the IpcOneShotServer
functionality...
src/test.rs
Outdated
} | ||
} | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why the second blank line?
I can only repro in release mode fwiw, and it takes about 40 runs |
(And I of course have no idea of how to make it more reproducible. Running it multiple times in parallel seemed to help) |
Out of curiosity (and because I've been getting a lot of libc malloc()/free() memory corruption) I ran Valgrind on Servo. @emilio asked me to share the Valgrind output on IRC. Here's a partial (still running, debug mode) Valgrind log: Valgrind log==8302== Memcheck, a memory error detector
==8302== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==8302== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==8302== Command: /shared/dev/rust/servo/target/debug/servo -z -f class/md5-3c1426976ebc62f419095e57d907419f/test.html
==8302==
VMware, Inc.
softpipe
3.3 (Core Profile) Mesa 17.3.0-devel
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x4BD52F5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4BD7A61: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4BD657F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4BD4815: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4BD71E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4BD641E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4BD45B7: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4BCF238: profile_traits::mem::ProfilerChan::send (mem.rs:38)
==8302== by 0xF1F962: profile::mem::Profiler::create (mem.rs:70)
==8302== Address 0xfc0eef4 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x4BD52F5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4BD7A61: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4BD657F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4BD4815: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4BD71E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4BD641E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4BD45B7: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4BCF238: profile_traits::mem::ProfilerChan::send (mem.rs:38)
==8302== by 0xF1F962: profile::mem::Profiler::create (mem.rs:70)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x4BD52F5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4BD7A61: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4BD657F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4BD4815: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4BD71E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4BD641E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4BD45B7: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4BCF238: profile_traits::mem::ProfilerChan::send (mem.rs:38)
==8302== by 0xF1F962: profile::mem::Profiler::create (mem.rs:70)
==8302==
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x57EFC05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x579C1E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579BADF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF765: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x579CCD1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579B80E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF67A: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x57861CC: webrender_api::api::RenderApiSender::create_api (api.rs:392)
==8302== by 0x4B6D1C: <servo::Servo<Window>>::new (lib.rs:206)
==8302== Address 0x173603e4 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x57EFC05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x579C1E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579BADF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF765: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x579CCD1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579B80E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF67A: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x57861CC: webrender_api::api::RenderApiSender::create_api (api.rs:392)
==8302== by 0x4B6D1C: <servo::Servo<Window>>::new (lib.rs:206)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x57EFC05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x579C1E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579BADF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF765: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x579CCD1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579B80E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF67A: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x57861CC: webrender_api::api::RenderApiSender::create_api (api.rs:392)
==8302== by 0x4B6D1C: <servo::Servo<Window>>::new (lib.rs:206)
==8302==
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x30C2FA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x22533F1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x20C6FBF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BE405: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x22EA2C1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x2076D1E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BBE14: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x3FBDA1A: script::serviceworker_manager::ServiceWorkerManager::spawn_manager (serviceworker_manager.rs:61)
==8302== by 0x3FD5F72: script::init_service_workers (lib.rs:197)
==8302== Address 0x175bde04 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x30C2FA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x22533F1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x20C6FBF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BE405: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x22EA2C1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x2076D1E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BBE14: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x3FBDA1A: script::serviceworker_manager::ServiceWorkerManager::spawn_manager (serviceworker_manager.rs:61)
==8302== by 0x3FD5F72: script::init_service_workers (lib.rs:197)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x30C2FA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x22533F1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x20C6FBF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BE405: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x22EA2C1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x2076D1E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BBE14: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x3FBDA1A: script::serviceworker_manager::ServiceWorkerManager::spawn_manager (serviceworker_manager.rs:61)
==8302== by 0x3FD5F72: script::init_service_workers (lib.rs:197)
==8302==
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x30CACA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x23462C1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x209B67F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BDF05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x21D1701: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x20E39CE: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BCC54: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x3FBDAAB: script::serviceworker_manager::ServiceWorkerManager::spawn_manager (serviceworker_manager.rs:62)
==8302== by 0x3FD5F72: script::init_service_workers (lib.rs:197)
==8302== Address 0x175c0cb4 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x30CACA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x23462C1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x209B67F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BDF05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x21D1701: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x20E39CE: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BCC54: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x3FBDAAB: script::serviceworker_manager::ServiceWorkerManager::spawn_manager (serviceworker_manager.rs:62)
==8302== by 0x3FD5F72: script::init_service_workers (lib.rs:197)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x30CACA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x23462C1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x209B67F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BDF05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x21D1701: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x20E39CE: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x30BCC54: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x3FBDAAB: script::serviceworker_manager::ServiceWorkerManager::spawn_manager (serviceworker_manager.rs:62)
==8302== by 0x3FD5F72: script::init_service_workers (lib.rs:197)
==8302==
==8302== Thread 19 Constellation:
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0xBBF865: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0xB91081: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0xB8E18F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0xBBDF05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0xB8EC51: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0xB8DA8E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0xBBDB14: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0xB648E9: constellation::network_listener::NetworkListener::initiate_fetch (network_listener.rs:80)
==8302== by 0x822BDA: <constellation::constellation::Constellation<Message, LTF, STF>>::handle_navigate_request (constellation.rs:1679)
==8302== Address 0x16dba024 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0xBBF865: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0xB91081: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0xB8E18F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0xBBDF05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0xB8EC51: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0xB8DA8E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0xBBDB14: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0xB648E9: constellation::network_listener::NetworkListener::initiate_fetch (network_listener.rs:80)
==8302== by 0x822BDA: <constellation::constellation::Constellation<Message, LTF, STF>>::handle_navigate_request (constellation.rs:1679)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0xBBF865: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0xB91081: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0xB8E18F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0xBBDF05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0xB8EC51: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0xB8DA8E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0xBBDB14: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0xB648E9: constellation::network_listener::NetworkListener::initiate_fetch (network_listener.rs:80)
==8302== by 0x822BDA: <constellation::constellation::Constellation<Message, LTF, STF>>::handle_navigate_request (constellation.rs:1679)
==8302==
==8302== Thread 25 LayoutThread Pip:
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x4D70AA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4CC1BC1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC179F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F805: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4CC2B51: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC0F3E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F5DF: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4CF7082: gfx::font_cache_thread::FontCacheThread::find_font_template (font_cache_thread.rs:460)
==8302== by 0x4CF896F: gfx::font_context::FontContext::layout_font_group_for_style (font_context.rs:163)
==8302== Address 0x17e35764 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x4D70AA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4CC1BC1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC179F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F805: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4CC2B51: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC0F3E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F5DF: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4CF7082: gfx::font_cache_thread::FontCacheThread::find_font_template (font_cache_thread.rs:460)
==8302== by 0x4CF896F: gfx::font_context::FontContext::layout_font_group_for_style (font_context.rs:163)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58592B1: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:337)
==8302== by 0x4D70AA5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4CC1BC1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC179F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F805: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4CC2B51: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC0F3E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F5DF: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4CF7082: gfx::font_cache_thread::FontCacheThread::find_font_template (font_cache_thread.rs:460)
==8302== by 0x4CF896F: gfx::font_context::FontContext::layout_font_group_for_style (font_context.rs:163)
==8302==
==8302== Thread 17 FontCacheThread:
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58596BC: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:376)
==8302== by 0x57EFC05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x579C1E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579BADF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF765: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x579CCD1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579B80E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF67A: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x5786746: webrender_api::api::RenderApi::update_resources (api.rs:479)
==8302== by 0x4CF62F2: gfx::font_cache_thread::FontCache::get_font_template_info::{{closure}} (font_cache_thread.rs:378)
==8302== Address 0x17b6b454 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58596BC: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:376)
==8302== by 0x57EFC05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x579C1E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579BADF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF765: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x579CCD1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579B80E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF67A: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x5786746: webrender_api::api::RenderApi::update_resources (api.rs:479)
==8302== by 0x4CF62F2: gfx::font_cache_thread::FontCache::get_font_template_info::{{closure}} (font_cache_thread.rs:378)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58596BC: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:376)
==8302== by 0x57EFC05: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x579C1E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579BADF: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF765: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x579CCD1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x579B80E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x57EF67A: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x5786746: webrender_api::api::RenderApi::update_resources (api.rs:479)
==8302== by 0x4CF62F2: gfx::font_cache_thread::FontCache::get_font_template_info::{{closure}} (font_cache_thread.rs:378)
==8302==
==8302== Syscall param sendmsg(msg.msg_control) points to uninitialised byte(s)
==8302== at 0xC7F6E90: sendmsg (sendmsg.c:28)
==8302== by 0x5859D0C: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:285)
==8302== by 0x58596BC: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:376)
==8302== by 0x4D710E5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4CC2281: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC142F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F985: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4CC37E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC0C6E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F35F: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4CF1C5E: gfx::font_cache_thread::FontCache::run (font_cache_thread.rs:172)
==8302== by 0x4CF6DC1: gfx::font_cache_thread::FontCacheThread::new::{{closure}} (font_cache_thread.rs:448)
==8302== Address 0x17cbc414 is 20 bytes inside a block of size 24 alloc'd
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58596BC: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:376)
==8302== by 0x4D710E5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4CC2281: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC142F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F985: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4CC37E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC0C6E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F35F: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4CF1C5E: gfx::font_cache_thread::FontCache::run (font_cache_thread.rs:172)
==8302== by 0x4CF6DC1: gfx::font_cache_thread::FontCacheThread::new::{{closure}} (font_cache_thread.rs:448)
==8302== Uninitialised value was created by a heap allocation
==8302== at 0xA56ABEF: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8302== by 0x5859A8B: ipc_channel::platform::unix::OsIpcSender::send::send_first_fragment (mod.rs:246)
==8302== by 0x58596BC: ipc_channel::platform::unix::OsIpcSender::send (mod.rs:376)
==8302== by 0x4D710E5: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}}::{{closure}} (ipc.rs:190)
==8302== by 0x4CC2281: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC142F: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F985: <ipc_channel::ipc::IpcSender<T>>::send::{{closure}} (ipc.rs:171)
==8302== by 0x4CC37E1: <std::thread::local::LocalKey<T>>::try_with (local.rs:379)
==8302== by 0x4CC0C6E: <std::thread::local::LocalKey<T>>::with (local.rs:293)
==8302== by 0x4D6F35F: <ipc_channel::ipc::IpcSender<T>>::send (ipc.rs:170)
==8302== by 0x4CF1C5E: gfx::font_cache_thread::FontCache::run (font_cache_thread.rs:172)
==8302== by 0x4CF6DC1: gfx::font_cache_thread::FontCacheThread::new::{{closure}} (font_cache_thread.rs:448)
==8302==
Node was being treated as inline, but it has an associated fragment! (thread LayoutThread PipelineId { namespace_id: PipelineNamespaceId(0), index: PipelineIndex(NonZero(NonZero(1))) }, at components/layout/query.rs:524)
ERROR:servo: Node was being treated as inline, but it has an associated fragment!
Pipeline failed in hard-fail mode. Crashing!
==8302==
==8302== HEAP SUMMARY:
==8302== in use at exit: 87,898,646 bytes in 62,383 blocks
==8302== total heap usage: 180,821 allocs, 118,438 frees, 330,921,371 bytes allocated
==8302==
==8302== LEAK SUMMARY:
==8302== definitely lost: 11,034 bytes in 30 blocks
==8302== indirectly lost: 224 bytes in 5 blocks
==8302== possibly lost: 167,880 bytes in 742 blocks
==8302== still reachable: 87,719,508 bytes in 61,606 blocks
==8302== suppressed: 0 bytes in 0 blocks
==8302== Rerun with --leak-check=full to see details of leaked memory
==8302==
==8302== For counts of detected and suppressed errors, rerun with: -v
==8302== ERROR SUMMARY: 63 errors from 8 contexts (suppressed: 0 from 0) |
This is the same setup we have in other Servo repositories.
cargo test stress
panics for me fairly frequently.