Git Product home page Git Product logo

Comments (10)

jsaak avatar jsaak commented on June 1, 2024 1

For me all problems started with stopping the event loop. There is a trick used by many without OS interrupts. Make a pipe. And select() on the read end of the pipe all the time. And if you want to interrupt, then you write a byte to the write end of the pipe. Maybe it is completely unrelated, but i hope this may help you.

from async.

jsaak avatar jsaak commented on June 1, 2024 1

It is all good.
I am sorry for the false alarm.
This time it was an error on my side. (Sent an exception to the wrong fiber, where there was no exception handling)

from async.

ioquatix avatar ioquatix commented on June 1, 2024

This is probably a bug that can only be fixed by modifying/fixing CRuby.

It's probably in the thread exit code path where a scheduler is set, it's ignoring the exception.

I'll take a look.

from async.

ioquatix avatar ioquatix commented on June 1, 2024

As a bit of a hack, we can define Async::Scheduler#scheduler_close as:

		def scheduler_close
			unless $!
				self.run
			end
		ensure
			self.close
		end

and it works as you expect, but I don't like using the implicit $! exception reference. We should probably pass it explicitly if possible.

from async.

ioquatix avatar ioquatix commented on June 1, 2024

I'm basically okay with the proposed fix, the chance of $! being set incorrectly in the scheduler_close context is probably zero.

from async.

ioquatix avatar ioquatix commented on June 1, 2024

This should be fixed, please feel free to test it and report back.

from async.

jsaak avatar jsaak commented on June 1, 2024

Either this fix or the scheduler closing broke exception handling for me:
I can not catch exception any more in Fibers.

/home/jsaak/.gem/ruby/3.2.2/gems/async-2.6.3/lib/async/scheduler.rb:246:in `select': Failed (RuntimeError)
	from /home/jsaak/.gem/ruby/3.2.2/gems/async-2.6.3/lib/async/scheduler.rb:246:in `run_once!'
	from /home/jsaak/.gem/ruby/3.2.2/gems/async-2.6.3/lib/async/scheduler.rb:222:in `run_once'
	from /home/jsaak/.gem/ruby/3.2.2/gems/async-2.6.3/lib/async/scheduler.rb:285:in `block in run'
	from /home/jsaak/.gem/ruby/3.2.2/gems/async-2.6.3/lib/async/scheduler.rb:279:in `handle_interrupt'
	from /home/jsaak/.gem/ruby/3.2.2/gems/async-2.6.3/lib/async/scheduler.rb:279:in `run'
	from /home/jsaak/.gem/ruby/3.2.2/gems/async-2.6.3/lib/async/scheduler.rb:46:in `scheduler_close'
jsaak@auto:[master]~$ curl: (23) Failure writing output to destination
(23) Failed writing body
curl: (23) Failure writing output to destination

After this happens, it hangs. Does not exit.

I do not understand what you are trying to do.

from async.

ioquatix avatar ioquatix commented on June 1, 2024

Do you mind giving me a small reproduction?

from async.

jsaak avatar jsaak commented on June 1, 2024

I will try.

from async.

ioquatix avatar ioquatix commented on June 1, 2024

It's all good, let me know if you run into any other issues.

from async.

Related Issues (20)

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.