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

Mibbit IRC doesn't work #14993

Closed
leoschwarz opened this issue Jan 12, 2017 · 5 comments
Closed

Mibbit IRC doesn't work #14993

leoschwarz opened this issue Jan 12, 2017 · 5 comments

Comments

@leoschwarz
Copy link

@leoschwarz leoschwarz commented Jan 12, 2017

  1. Launch servo ./mach run "https://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust"
  2. Click the "go" button and wait. (<10s in release mode, <2min in dev mode)

Leads to Servo freezing/crashing and output similar to: ReleaseDebug

@jdm jdm added the A-webcompat label Jan 12, 2017
@jdm
Copy link
Member

@jdm jdm commented Jan 12, 2017

I haven't even seen anything besides a gray screen rendered in a debug build. Very peculiar.

@jdm
Copy link
Member

@jdm jdm commented Jan 13, 2017

The grey screen is caused by #15017 and the fact that Servo (and presumably the version of openSSL that I'm using) can't connect to mibbit's HTTPS server - it claims an unexpected EOF occurs during the handshake.

@jdm
Copy link
Member

@jdm jdm commented Jan 13, 2017

On a different machine I can reproduce this problem. A backtrace from a debug build shows me:

ERROR:servo: called `Result::unwrap()` on an `Err` value: Error { repr: Os { code: 24, message: "Too many open files" } }
Pipeline layout content shutdown chan: Error { repr: Os { code: 24, message: "Too many open files" } } (thread Constellation, at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/result.rs:845)
[Switching to Thread 0x7fffe75ff700 (LWP 12209)]

Thread 25 "ScriptThread Pi" hit Breakpoint 1, std::panicking::rust_panic () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:586
586	/buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs: No such file or directory.
(gdb) bt
#0  std::panicking::rust_panic () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:586
#1  0x000055555afb71cd in std::panicking::rust_panic_with_hook () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:571
#2  0x000055555afb6fa5 in std::panicking::begin_panic<collections::string::String> () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:517
#3  0x000055555afb6f1a in std::panicking::begin_panic_fmt () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:501
#4  0x000055555afb6ea8 in std::panicking::rust_begin_panic () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:477
#5  0x000055555afe43be in core::panicking::panic_fmt () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/panicking.rs:69
#6  0x000055555996f9ff in core::result::unwrap_failed<std::io::error::Error> (msg="called `Result::unwrap()` on an `Err` value", error=Error = {...})
    at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/macros.rs:29
#7  0x0000555559961011 in core::result::{{impl}}::unwrap<(ipc_channel::ipc::IpcSender<core::result::Result<net_traits::image_cache_thread::ImageOrMetadataAvailable, net_traits::image_cache_thread::ImageState>>, ipc_channel::ipc::IpcReceiver<core::result::Result<net_traits::image_cache_thread::ImageOrMetadataAvailable, net_traits::image_cache_thread::ImageState>>),std::io::error::Error> (self=Err = {...})
    at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libcore/result.rs:745
#8  0x00005555599a7b70 in net_traits::image_cache_thread::{{impl}}::find_image_or_metadata (self=0x7fffe5630dc0, url=ServoUrl = {...}, use_placeholder=Yes, can_request=Yes)
    at /home/jdm/master-servo/components/net_traits/image_cache_thread.rs:132
Python Exception <class 'ValueError'> invalid literal for int() with base 0: '0x7fffd05f6b30 "https://s3.amazonaws.com/mibbit/gfx/user.png"': 
#9  0x0000555558a724b9 in script::dom::htmlimageelement::{{impl}}::update_image (self=0x7fffd05baf00, value=...) at /home/jdm/master-servo/components/script/dom/htmlimageelement.rs:285
#10 0x0000555558a75362 in script::dom::htmlimageelement::{{impl}}::attribute_mutated (self=0x7fffd05baf00, attr=0x7fffd020df80, mutation=Set = {...})
    at /home/jdm/master-servo/components/script/dom/htmlimageelement.rs:581
#11 0x00005555589fb530 in script::dom::element::{{impl}}::push_attribute (self=0x7fffd05baf00, attr=0x7fffd020df80) at /home/jdm/master-servo/components/script/dom/element.rs:961
#12 0x00005555589fb1da in script::dom::element::{{impl}}::push_new_attribute (self=0x7fffd05baf00, local_name=Atom<html5ever_atoms::LocalNameStaticSet> = {...}, value=String = {...}, 
    name=Atom<html5ever_atoms::LocalNameStaticSet> = {...}, namespace=Atom<html5ever_atoms::NamespaceStaticSet> = {...}, prefix=None) at /home/jdm/master-servo/components/script/dom/element.rs:953
#13 0x00005555589fdc71 in script::dom::element::{{impl}}::set_first_matching_attribute<closure> (self=0x7fffd05baf00, local_name=Atom<html5ever_atoms::LocalNameStaticSet> = {...}, value=String = {...}, 
    name=Atom<html5ever_atoms::LocalNameStaticSet> = {...}, namespace=Atom<html5ever_atoms::NamespaceStaticSet> = {...}, prefix=None, find=closure = {...})
    at /home/jdm/master-servo/components/script/dom/element.rs:1052
#14 0x00005555589fc7d5 in script::dom::element::{{impl}}::set_attribute (self=0x7fffd05baf00, name=0x7fffe75f5790, value=String = {...}) at /home/jdm/master-servo/components/script/dom/element.rs:1006
#15 0x0000555558a01767 in script::dom::element::{{impl}}::set_string_attribute (self=0x7fffd05baf00, local_name=0x7fffe75f5790, value=DOMString = {...})
    at /home/jdm/master-servo/components/script/dom/element.rs:1159
#16 0x0000555559301a0a in script::dom::htmlimageelement::{{impl}}::SetSrc (self=0x7fffd05baf00, value=DOMString = {...}) at /home/jdm/master-servo/components/script/dom/htmlimageelement.rs:459
#17 0x0000555558f68151 in script::dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementBinding::set_src::{{closure}} () at /home/jdm/master-servo/components/script/dom/bindings/mod.rs:164
#18 0x000055555932edf9 in core::ops::FnOnce::call_once::h21e82ffe8bd419f8 ()
#19 0x00005555587c2beb in std::panic::{{impl}}::call_once<bool,closure> (self=AssertUnwindSafe<closure> = {...}, _args=0) at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panic.rs:296
#20 0x0000555557e82a4d in std::panicking::try::do_call<std::panic::AssertUnwindSafe<closure>,bool> (data=0x7fffe75f5ca0 "\310^_\347\377\177")
    at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:460
#21 0x000055555afbe09b in panic_unwind::__rust_maybe_catch_panic () at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libpanic_unwind/lib.rs:98
#22 0x0000555557d380d5 in std::panicking::try<bool,std::panic::AssertUnwindSafe<closure>> (f=AssertUnwindSafe<closure> = {...})
    at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panicking.rs:436
#23 0x0000555557b65c2a in std::panic::catch_unwind<std::panic::AssertUnwindSafe<closure>,bool> (f=AssertUnwindSafe<closure> = {...})
    at /buildslave/rust-buildbot/slave/nightly-dist-rustc-linux/build/src/libstd/panic.rs:361
#24 0x000055555758da5e in js::panic::wrap_panic<std::panic::AssertUnwindSafe<closure>,bool> (function=AssertUnwindSafe<closure> = {...}, generic_return_type=false)
    at /home/jdm/master-servo/.cargo/git/checkouts/rust-mozjs-8611526964119dd6/15ff1e8/src/panic.rs:22
#25 0x0000555558f67e72 in script::dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementBinding::set_src (cx=0x7fffeb4c8c40, obj=Handle<*mut js::jsapi::JSObject> = {...}, 
    this=0x7fffd05baf00, args=JSJitSetterCallArgs = {...}) at /home/jdm/master-servo/components/script/dom/bindings/mod.rs:164
#26 0x00007fffedd28494 in ?? ()
#27 0x000055555d445100 in ?? ()
#28 0x00007fffe75f5f30 in ?? ()
#29 0x0000000000000000 in ?? ()
(gdb) 
@jdm
Copy link
Member

@jdm jdm commented Jan 13, 2017

The reason that the backtrace always shows a "Too many files" error under HTMLImageElement::SetSrc is that the page ends up creating image elements and loading https://s3.amazonaws.com/mibbit/gfx/mode_none.png and https://s3.amazonaws.com/mibbit/gfx/user.png until the end of time. Each time we set the source of an image we create a new IPC channel in order to communicate with the image cache thread, which consumes a file descriptor.

@ferjm
Copy link
Member

@ferjm ferjm commented Apr 6, 2017

This seems to be fixed after #15701 was fixed

@ferjm ferjm closed this Apr 6, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.