Skip to content

Reproducible crash with get_typeof when using Lua5.4 #101

@rolandlo

Description

@rolandlo

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions