Skip to content

Reproducible crash with get_typeof when using Lua5.4 #101

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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