Skip to content

[UIFontDescriptor initialize] may have been in progress in another thread when fork() was called #414

Open
@erdemgezer

Description

@erdemgezer

Having interesting errors both on Mac and Ubuntu (Docker) while adding text on top of an image using ruby-vips.

text = Vips::Image.text(
        text_content,
        width: width,
        height: height,
        align: vips_align,
        font: font_name,
        fontfile: font_file,
        spacing: line_spacing
      )
image.composite(text, :over, x: x, y: y)

On my mac development environment, If I call this method from an ActiveJob, it fails with:

objc[25970]: +[UIFontDescriptor initialize] may have been in progress in another thread when fork() was called.
objc[25970]: +[UIFontDescriptor initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.

Using of env var OBJC_DISABLE_INITIALIZE_FORK_SAFETY=yes fixes it as suggested in #155 (comment)

However, on Ubuntu docker environment I randomly get segmentation fault errors or floating point exception errors when running the from Rails console.

Everthing works fine if I don't use the .text method in both environments.

Mac stack
MacOS 15.3.1 (M2)
Ruby 3.3.5
Rails 7.2.1
vips-8.16.0

Ubuntu stack
Dockerized x86_64
Linux 116.202.15.119-1f5530ef76b3 6.8.0-54-generic
Using libvips42 package
Ruby 3.3.5
Rails 7.2.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions