Skip to content
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

Closed
wants to merge 2 commits into from
Closed

test: Add a test that repros servo/servo#13480 #179

wants to merge 2 commits into from

Conversation

emilio
Copy link
Member

@emilio emilio commented Nov 10, 2017

cargo test stress panics for me fairly frequently.

@highfive
Copy link
Collaborator

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.

@emilio
Copy link
Member Author

emilio commented Nov 10, 2017

This is not for merge yet, until we find a fix.

@emilio
Copy link
Member Author

emilio commented Nov 10, 2017

Btw @dlrobertson @antrik, in case you have any bright idea about this, it'd be definitely appreciated!

STR are in rr-debugger/rr#2128.

@emilio
Copy link
Member Author

emilio commented Nov 11, 2017

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.

@emilio
Copy link
Member Author

emilio commented Nov 11, 2017

I suspect of the channel serialisation code... we'll see...

@emilio
Copy link
Member Author

emilio commented Nov 11, 2017

Upon reflection I suspect we just run out of fds...

@dlrobertson
Copy link
Contributor

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?

@antrik
Copy link
Contributor

antrik commented Nov 12, 2017

@emilio I can't reproduce it either. How exactly does it fail for you?

Copy link
Contributor

@antrik antrik left a 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")))]
Copy link
Contributor

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() {
Copy link
Contributor

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 {
Copy link
Contributor

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());
}
Copy link
Contributor

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");
Copy link
Contributor

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
}
}


Copy link
Contributor

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?

@emilio
Copy link
Member Author

emilio commented Nov 14, 2017

I can only repro in release mode fwiw, and it takes about 40 runs

@emilio
Copy link
Member Author

emilio commented Nov 14, 2017

(And I of course have no idea of how to make it more reproducible. Running it multiple times in parallel seemed to help)

@mateon1
Copy link

mateon1 commented Nov 25, 2017

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)

This is the same setup we have in other Servo repositories.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants