ipc-channel
ipc-channel copied to clipboard
test: Add a test that repros servo/servo#13480
cargo test stress panics for me fairly frequently.
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.
Btw @dlrobertson @antrik, in case you have any bright idea about this, it'd be definitely appreciated!
STR are in https://github.com/mozilla/rr/issues/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.
for i in `seq 0 500`; do cargo test stress; done
Is there anything else required to repro this?
@emilio I can't reproduce it either. How exactly does it fail for you?
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.
It seems that ipc_channel reads uninitialized values at times.
@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)