[#87847] undefined symbol: mjit_init_p — Leam Hall <leamhall@...>

I pulled Ruby trunk on 3 Jul and am now getting errors similar to the

10 messages 2018/07/07

[#88088] [Ruby trunk Misc#14937] [PATCH] thread_pthread: lazy-spawn timer-thread only on contention — normalperson@...

Issue #14937 has been reported by normalperson (Eric Wong).

9 messages 2018/07/24

[ruby-core:88215] [Ruby trunk Bug#14949] test_jit.rb test_unload_units fails on 32-bit

From: Greg.mpls@...
Date: 2018-07-30 20:20:27 UTC
List: ruby-core #88215
Issue #14949 has been updated by MSP-Greg (Greg L).


I'm also seeing a lot of error text, 395 items in the errs array.  Asserts pass up to the assert_equal at line 562.  The matches on errs[10] & errs[11] exist, but they're at 201 & 202 respectively.

I've got `rb_mjit_min_header-2.6.0.h`, I can attach it if you'd like, it's about 5 MB in size.

Also, to get it to run, I changed the current loop to what's below.

Thanks, Greg

```ruby
begin;
  1.times do |i|
    eval 'def mjit0 ; print 0 end ; mjit0'
    eval 'def mjit1 ; print 1 end ; mjit1'
    eval 'def mjit2 ; print 2 end ; mjit2'
    eval 'def mjit3 ; print 3 end ; mjit3'
    eval 'def mjit4 ; print 4 end ; mjit4'
    eval 'def mjit5 ; print 5 end ; mjit5'
    eval 'def mjit6 ; print 6 end ; mjit6'
    eval 'def mjit7 ; print 7 end ; mjit7'
    eval 'def mjit8 ; print 8 end ; mjit8'
    eval 'def mjit9 ; print 9 end ; mjit9'
  end
end;
```

----------------------------------------
Bug #14949: test_jit.rb test_unload_units fails on 32-bit
https://bugs.ruby-lang.org/issues/14949#change-73235

* Author: normalperson (Eric Wong)
* Status: Open
* Priority: Normal
* Assignee: k0kubun (Takashi Kokubun)
* Target version: 
* ruby -v: 
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
I get multiple definition warnings from this test.  It only
happens on my 32-bit systems (both VM and real HW) on Debian 9.
Attached log was made with below patch:

```
--- a/test/ruby/test_jit.rb
+++ b/test/ruby/test_jit.rb
@@ -541,32 +541,33 @@ def test_unload_units
     Dir.mktmpdir("jit_test_unload_units_") do |dir|
       # MIN_CACHE_SIZE is 10
       out, err = eval_with_jit({"TMPDIR"=>dir}, "#{<<~"begin;"}\n#{<<~'end;'}", verbose: 1, min_calls: 1, max_cache: 10)
       begin;
         10.times do |i|
           eval(<<-EOS)
             def mjit#{i}
               print #{i}
             end
             mjit#{i}
           EOS
         end
       end;
       assert_equal('0123456789', out)
       compactions, errs = err.lines.partition do |l|
         l.match?(/\AJIT compaction \(\d+\.\dms\): Compacted \d+ methods ->/)
       end
       assert_match(/\A#{JIT_SUCCESS_PREFIX}: block in <main>@-e:/, errs[0])
       9.times do |i|
         assert_match(/\A#{JIT_SUCCESS_PREFIX}: mjit#{i}@\(eval\):/, errs[i + 1])
       end
+      warn "errs: #{errs.join}"
       assert_equal("Too many JIT code -- 1 units unloaded\n", errs[10])
       assert_match(/\A#{JIT_SUCCESS_PREFIX}: mjit9@\(eval\):/, errs[11])
 
       # On --jit-wait, when the number of JIT-ed code reaches --jit-max-cache,
       # it should trigger compaction.
       assert_equal(2, compactions.size)
 
       # verify .o files are deleted on unload_units
       assert_send([Dir, :empty?, dir])
     end
   end
```


---Files--------------------------------
unload_units.txt (25.2 KB)
rb_mjit_header.h (811 KB)
mjit_header_i686_native.h (784 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next