-
Notifications
You must be signed in to change notification settings - Fork 9
Description
When executing this script via lua5.4 typeof.lua I get a crash every time with the following typeof.lua script:
local vips = require "vips"
local im = vips.Image.xyz(1,1)
print(im:get_typeof("width"))It doesn't crash with Lua 5.2, Lua 5.3 or Luajit. It also crashes in the interpreter when I enter the commands on one line like this:
Lua 5.4.8 Copyright (C) 1994-2025 Lua.org, PUC-Rio
> vips = require "vips"
> im = vips.Image.xyz(1,1); print(im:get_typeof("width"))
Ungültiger Maschinenbefehl (Speicherabzug geschrieben)
This issue (like others in the past) can be fixed by stopping and restarting garbage collection during the call to
vips_lib.vips_image_get_typeof(self.vimage, name)in function Image_method:get_typeof(name). But there must be a better fix for these issues.
The crash also happens when I create the image with a different method that uses voperation.call, i.e.
im = vips.Image.new_from_file("filename.jpg")or
im = vips.Image.new_from_array {0}
im = im:bandjoin(im)In the latter example the second line is needed to create the crash. The first line doesn't use voperation.call, but calls vips_image_new_matrix_from_array directly.
I guess there is something wrong regarding garbage collection in voperation.call. It only shows up in Lu5.4 because of the more aggressive garbage collection.