bugGNU Octave - Bugs: bug #55492, "make check" crashes...


bug #55492: "make check" crashes with jit (llvm 4.0.1)

Submitted by:  Markus Mützel <mmuetzel>
Submitted on:  Wed 16 Jan 2019 07:18:21 PM UTC  
Category:  Interpreter Severity:  3 - Normal
Priority:  3 - Low Item Group:  Segfault, Bus Error, etc.
Status:  Confirmed Assigned to:  None
Originator Name:  Open/Closed:  Open
Release:  dev Operating System:  GNU/Linux

Add a New Comment (Rich Markup)

You are not logged in

Please log in, so followups can be emailed to you.


Tue 22 Jan 2019 08:47:55 AM UTC, comment #4: 

Nice find.
Can you provide a patch that overloads "findSymbol" and sets the flags correctly? Would that break backward compatibility?

Markus Mützel <mmuetzel>
Project Member
Mon 21 Jan 2019 08:22:20 PM UTC, comment #3: 

I think that I have found the explanation in LLVM's 4.0.1 RTDyldMemoryManager.h:

  /// Legacy symbol lookup - DEPRECATED! Please override findSymbol instead.
  /// This method returns the address of the specified function or variable.
  /// It is used to resolve symbols during module linking.
  virtual uint64_t getSymbolAddress(const std::string &Name) {
    return getSymbolAddressInProcess(Name);

  /// This method returns a RuntimeDyld::SymbolInfo for the specified function
  /// or variable. It is used to resolve symbols during module linking.
  /// By default this falls back on the legacy lookup method:
  /// 'getSymbolAddress'. The address returned by getSymbolAddress is treated as
  /// a strong, exported symbol, consistent with historical treatment by
  /// RuntimeDyld.
  /// Clients writing custom RTDyldMemoryManagers are encouraged to override
  /// this method and return a SymbolInfo with the flags set correctly. This is
  /// necessary for RuntimeDyld to correctly handle weak and non-exported symbols.
  JITSymbol findSymbol(const std::string &Name) override {
    return JITSymbol(getSymbolAddress(Name), JITSymbolFlags::Exported);

Julien Bect <jbect>
Thu 17 Jan 2019 08:37:32 PM UTC, comment #2: 

Here is a minimal example to reproduce the problem:

jit_enable (1)
m = [1 2; 3 4];
while (1)
  z = m(1, 2);

Julien Bect <jbect>
Thu 17 Jan 2019 05:24:32 PM UTC, comment #1: 

Since the JIT is experimental I lowered the priority.  I believe Julien knows about the crash with LLVM 4.0.

Rik <rik5>
Project Administrator
Wed 16 Jan 2019 07:18:21 PM UTC, original submission:  

On Ubuntu 18.10 with llvm 1:4.0.1-10build1, I configuring with:

LLVM_CONFIG=`which llvm-config-4.0` ../configure CPPFLAGS=-I/usr/include/hdf5/serial LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/hdf5/serial" --enable-jit

Running "make check" crashes at "jit.tst" with:

  jit.tst ........................................................LLVM ERROR: Program used extern function 'jit_paren_subsref_matrix_scalar2' which could not be resolved!

CC'ing Julien Bect as the author of the updated configure options.

Markus Mützel <mmuetzel>
Project Member


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -email is unavailable- added by jbect (Posted a comment)
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by mmuetzel (Submitted the item)
  • -email is unavailable- added by mmuetzel

    Do you think this task is very important?
    If so, you can add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.




    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2019-01-17 rik5 Priority5 - Normal => 3 - Low
        StatusNone => Confirmed
    2019-01-16 mmuetzel Carbon-Copy- => Added jbect

    Back to the top

    Powered by Savane 3.6