Skip to content
  • nagachika's avatar
    949af694
    merge revision(s)... · 949af694
    nagachika authored
    merge revision(s) 5680c38c,f5d20411: [Backport #17573]
    
    	Use valid `ec` for postponed job.
    
    	Postponed job can be registered from non-Ruby thread, which means
    	`ec` in TLS can be NULL. In this case, use main thread's `ec` instead.
    
    	See https://github.com/ruby/ruby/pull/4108
    	and https://github.com/ruby/ruby/pull/4336
    
    
    	---
    	 vm_trace.c | 16 ++++++++++++----
    	 1 file changed, 12 insertions(+), 4 deletions(-)
    
    	Avoid assert failure when NULL EC is expected
    
    	After 5680c38c, postponed job APIs now
    	expect to be called on native threads not managed by Ruby and handles
    	getting a NULL execution context. However, in debug builds the change
    	runs into an assertion failure with GET_EC() which asserts that EC is
    	non-NULL. Avoid the assertion failure by passing `false` for `expect_ec`
    	instead as the intention is to handle when there is no EC.
    
    	Add a test from John Crepezzi and John Hawthorn to exercise this
    	situation.
    
    	See GH-4108
    	See GH-5094
    
    	[Bug #17573]
    
    Co-authored-by: default avatarJohn Hawthorn <john@hawthorn.email>
    Co-authored-by: default avatarJohn Crepezzi <john.crepezzi@gmail.com>
    	---
    	 ext/-test-/postponed_job/postponed_job.c       | 31 ++++++++++++++++++++++++++
    	 test/-ext-/postponed_job/test_postponed_job.rb |  7 ++++++
    	 vm_trace.c                                     |  2 +-
    	 3 files changed, 39 insertions(+), 1 deletion(-)
    949af694
    merge revision(s)...
    nagachika authored
    merge revision(s) 5680c38c,f5d20411: [Backport #17573]
    
    	Use valid `ec` for postponed job.
    
    	Postponed job can be registered from non-Ruby thread, which means
    	`ec` in TLS can be NULL. In this case, use main thread's `ec` instead.
    
    	See https://github.com/ruby/ruby/pull/4108
    	and https://github.com/ruby/ruby/pull/4336
    
    
    	---
    	 vm_trace.c | 16 ++++++++++++----
    	 1 file changed, 12 insertions(+), 4 deletions(-)
    
    	Avoid assert failure when NULL EC is expected
    
    	After 5680c38c, postponed job APIs now
    	expect to be called on native threads not managed by Ruby and handles
    	getting a NULL execution context. However, in debug builds the change
    	runs into an assertion failure with GET_EC() which asserts that EC is
    	non-NULL. Avoid the assertion failure by passing `false` for `expect_ec`
    	instead as the intention is to handle when there is no EC.
    
    	Add a test from John Crepezzi and John Hawthorn to exercise this
    	situation.
    
    	See GH-4108
    	See GH-5094
    
    	[Bug #17573]
    
    Co-authored-by: default avatarJohn Hawthorn <john@hawthorn.email>
    Co-authored-by: default avatarJohn Crepezzi <john.crepezzi@gmail.com>
    	---
    	 ext/-test-/postponed_job/postponed_job.c       | 31 ++++++++++++++++++++++++++
    	 test/-ext-/postponed_job/test_postponed_job.rb |  7 ++++++
    	 vm_trace.c                                     |  2 +-
    	 3 files changed, 39 insertions(+), 1 deletion(-)
Loading