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);
break;
endwhile

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:
   
   
Comment:
   

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.4