GraphicsMagick 的 OpenCL 开发记录(二十二)

文章目录

  • 关于`R6025 pure virtual function call`的问题

<2022-04-14 周四>

关于R6025 pure virtual function call的问题

调试状态下关闭程序可以看到异常出在:

static MagickCLDevice RelinquishMagickCLDevice(MagickCLDevice device)
{
  if (device == (MagickCLDevice) NULL)
    return((MagickCLDevice) NULL);

  device->platform_name=RelinquishMagickMemory(device->platform_name);
  device->vendor_name=RelinquishMagickMemory(device->vendor_name);
  device->name=RelinquishMagickMemory(device->name);
  device->version=RelinquishMagickMemory(device->version);
  if (device->program != (cl_program) NULL)
    (void) openCL_library->clReleaseProgram(device->program);
  while (device->command_queues_index >= 0)
    (void) openCL_library->clReleaseCommandQueue(
      device->command_queues[device->command_queues_index--]);
  RelinquishSemaphoreInfo(&device->lock);
  return((MagickCLDevice) RelinquishMagickMemory(device));
}

这里:

if (device->program != (cl_program) NULL)
  (void) openCL_library->clReleaseProgram(device->program);

问题很诡异,有时一直出现,有时一直正常。

R6025
- pure virtual function call
Unhandled exception at 0x05E88292 (intelocl32.dll) in IMDisplay.exe: Fatal program exit requested.

解决方法见:“如何修复R6025 pure virtual function call问题”。

你可能感兴趣的:(GraphicsMagick,的,OpenCL,开发,GraphicsMagick,ImageMagick,OpenCL,c++)