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

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

Open
erdemgezer opened this issue Mar 12, 2025 · 2 comments
Labels

Comments

@erdemgezer
Copy link

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

@erdemgezer erdemgezer added the bug label Mar 12, 2025
@jcupitt
Copy link
Member

jcupitt commented Mar 13, 2025

Hi @erdemgezer,

There have been some improvements to locking in text rendering in recent libvipses. Have you tried your Ubuntu example with current stable libvips (8.16.1)?

Text rendering is extremely complex, unfortunately, and interacts with a huge number of different libraries and system components on the various platforms :(

@erdemgezer
Copy link
Author

Hi @erdemgezer,

There have been some improvements to locking in text rendering in recent libvipses. Have you tried your Ubuntu example with current stable libvips (8.16.1)?

Text rendering is extremely complex, unfortunately, and interacts with a huge number of different libraries and system components on the various platforms :(

Hi @jcupitt ,
Thanks for letting me know about the latest stable release. I used to install libvips via apt-get from the Dockerfile but I believe I need to build it from source to be able to use the latest version. I'll give it a go and share the results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants