Giter Site home page Giter Site logo

Thread safe issues with imlib2 about rszr HOT 8 CLOSED

martini avatar martini commented on May 27, 2024
Thread safe issues with imlib2

from rszr.

Comments (8)

mtgrosser avatar mtgrosser commented on May 27, 2024

Thank you for the hint, I'll check options to integrate it in the gem.

from rszr.

martini avatar martini commented on May 27, 2024

In addition the code how to reproduce the issue:

require 'tempfile'
require 'rszr'

base64_image = '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'
content = Base64.strict_decode64(base64_image)

def resize(content, width)
    temp_file = ::Tempfile.new
    temp_file.binmode
    temp_file.write(content)
    temp_file.close
    image = Rszr::Image.load(temp_file.path)

    image.resize!(width, :auto)
    temp_file_resize = ::Tempfile.new.path
    image.save(temp_file_resize)
    image.send(:handle).finalize!
    temp_file_resize
end

threads = []
10.times do
    threads << Thread.new do
        10_000.times do |run|

            begin
                width = 32
                p "resize #{Thread.current.object_id}"
                resize(content.dup, width)
            rescue => e
                # require 'byebug'
                # byebug
                p e
            end
        end
    end
end

threads.each(&:join)

And an example how to solve it:

require 'tempfile'
require 'rszr'

base64_image = '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'
content = Base64.strict_decode64(base64_image)
@semaphore = Mutex.new

def resize(content, width)
    temp_file = ::Tempfile.new
    temp_file.binmode
    temp_file.write(content)
    temp_file.close

    temp_file_resize = nil
    @semaphore.synchronize do
      image = Rszr::Image.load(temp_file.path)

      image.resize!(width, :auto)
      temp_file_resize = ::Tempfile.new.path
      image.save(temp_file_resize)
      image.send(:handle).finalize!
    end
    temp_file_resize
end

threads = []
10.times do
    threads << Thread.new do
        10_000.times do |run|

            begin
                width = 32
                p "resize #{Thread.current.object_id}"
                resize(content.dup, width)
            rescue => e
                # require 'byebug'
                # byebug
                p e
            end
        end
    end
end

threads.each(&:join)

from rszr.

mtgrosser avatar mtgrosser commented on May 27, 2024

Fixed in 6e049aa, v0.4.0 released. Thanks for your report!

Btw, any reason why you are calling the finalize! method manually?

from rszr.

martini avatar martini commented on May 27, 2024

Btw, any reason why you are calling the finalize! method manually?

Because of memory issues. Just remove image.send(:handle).finalize! from the working example above and you will the that get issues again.

Greetings!

from rszr.

mtgrosser avatar mtgrosser commented on May 27, 2024

Which Ruby version are you using?

from rszr.

martini avatar martini commented on May 27, 2024

2.4.4

from rszr.

mtgrosser avatar mtgrosser commented on May 27, 2024

The GC test is failing on Ruby versions >= 2.4.
Unfortunately I haven't been able to determine the cause yet, need to do more research.

from rszr.

mtgrosser avatar mtgrosser commented on May 27, 2024

#3

from rszr.

Related Issues (12)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.