Skip to content

panic: failed to send message to system font service: Io(Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }) (thread Canvas, at components/fonts/system_font_service.rs:516) #36849

@fred-wang

Description

@fred-wang

Minimal testcase:

<!DOCTYPE html>
<script>
  window.addEventListener("load", _ => {
    let canvas = document.createElement("canvas");
    var context = canvas.getContext("2d");
    context.fillText(String.fromCodePoint(1012043, 175310), 0, 0);
  });
</script>

System: Linux
Version: Servo 0.0.1-43edab336
Command: ./servo/servo --headless

failed to send message to system font service: Io(Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }) (thread Canvas, at components/fonts/system_font_service.rs:516)
   0: servoshell::backtrace::print
   1: servoshell::panic_hook::panic_hook
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::begin_panic_handler::{{closure}}
   4: std::sys::backtrace::__rust_end_short_backtrace
   5: rust_begin_unwind
   6: core::panicking::panic_fmt
   7: core::result::unwrap_failed
   8: fonts::system_font_service::SystemFontServiceProxy::find_matching_font_templates
   9: fonts::font::FontGroupFamily::members
  10: fonts::font::FontGroupFamily::find
  11: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
  12: fonts::font::FontGroup::find_by_codepoint
  13: canvas::canvas_data::CanvasData<B>::build_unshaped_text_runs
  14: canvas::canvas_data::CanvasData<B>::fill_text_with_size
  15: canvas::canvas_paint_thread::CanvasPaintThread::process_canvas_2d_message
  16: std::sys::backtrace::__rust_begin_short_backtrace
  17: core::ops::function::FnOnce::call_once{{vtable.shim}}
  18: std::sys::pal::unix::thread::Thread::new::thread_start

The repro testcase is a bit flaky. Sometimes it does not produce any panic, sometimes (with the extra --enable-experimental-web-platform-features option?) it produces this panic message instead:

SystemFontService has already exited. (thread Canvas, at components/fonts/system_font_service.rs:528)
   0: servoshell::backtrace::print
   1: servoshell::panic_hook::panic_hook
   2: std::panicking::rust_panic_with_hook
   3: std::panicking::begin_panic_handler::{{closure}}
   4: std::sys::backtrace::__rust_end_short_backtrace
   5: rust_begin_unwind
   6: core::panicking::panic_fmt
   7: fonts::system_font_service::SystemFontServiceProxy::find_matching_font_templates
   8: fonts::font::FontGroupFamily::members
   9: fonts::font::FontGroupFamily::find
  10: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
  11: fonts::font::FontGroup::find_by_codepoint
  12: canvas::canvas_data::CanvasData<B>::build_unshaped_text_runs
  13: canvas::canvas_data::CanvasData<B>::fill_text_with_size
  14: canvas::canvas_paint_thread::CanvasPaintThread::process_canvas_2d_message
  15: std::sys::backtrace::__rust_begin_short_backtrace
  16: core::ops::function::FnOnce::call_once{{vtable.shim}}
  17: std::sys::pal::unix::thread::Thread::new::thread_start
  18: start_thread
             at ./nptl/pthread_create.c:447:8
  19: clone3
             at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:78:0

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-untriagedNew issues that haven't been triaged yet

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions