ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

解密FreeBSD 13.2上的OpenMP与ImageMagick问题

解密FreeBSD 13.2上的OpenMP与ImageMagick问题

在最近的系统更新到FreeBSD 13.2(RELEASE-p9)后,我们遇到了一个令人头疼的问题:在使用OpenMP与ImageMagick处理图像时,进程会随机锁定在100%的CPU使用率上,无法完成任务。通过调试,我们发现这些进程实际上陷入了sched_yield()的无限循环中。这篇博客将详细探讨这个问题的原因、影响以及可能的解决方案。

问题描述

我们的系统配置如下:

  • 操作系统: FreeBSD 13.2-RELEASE-p9
  • PHP版本: 8.1.27(CLI)
  • ImageMagick版本: 7.1.1-26

在使用OpenMP与ImageMagick处理图像时,某些进程会在执行过程中卡住,并显示以下调试信息:

(gdb) thread apply all bt Thread 1 (LWP 101575 of process 33247): #0 sched_yield () at sched_yield.S:4 #1 0x00000008456d0491 in __kmp_wait_4_ptr (...) at /usr/src/contrib/llvm-project/openmp/runtime/src/kmp_dispatch.cpp:2695 ...

从上面的调试信息可以看出,进程在尝试获取锁时陷入了一个循环,导致无法继续执

返回列表