[foreign-jextract] Segmentation fault from generated code

Filip Krakowski krakowski at hhu.de
Fri Dec 18 12:56:31 UTC 2020


Hi,

the same code is running well inside a Docker container (Debian 11). I 
use Debian as the base image because it provides packages for the ucx 
development headers. For reference, here is my Dockerfile.

    FROM debian:bullseye

    # Use bash shell
    SHELL ["/bin/bash", "-c"]

    # Install packages
    RUN apt update && apt install -y libucx0 libucx-dev curl unzip zip
    wget llvm-9

    # Install SDKMAN!
    RUN curl -s "https://get.sdkman.io" | bash

    # Initialize SDKMAN!
    RUN source "$HOME/.sdkman/bin/sdkman-init.sh"

    # Install latest OpenJDK Panama nightly
    RUN curl -s "https://coconucos.cs.hhu.de/forschung/jdk/install" | bash


Inside the built container I switch to the Panama JDK using "sdk default 
java panama", jextract the ucp headers using "jextract -l ucp -d . -t 
org.openucx /usr/include/ucp/api/ucp.h" and run a simple programm using 
"java -Dforeign.restricted=permit --add-modules jdk.incubator.foreign 
Main.java".

    import org.openucx.ucx_h.ucp_params_t;

    public class Main {

         public static void main(String[] args) {
             var layout = ucp_params_t.$LAYOUT();
             System.out.println(layout);
         }
    }


The only difference I make with the other method (leading to a segfault) 
is that I run jextract locally on my machine (Arch Linux), compile the 
code afterwards and upload it to our cluster (CentOS). Both machines 
have the same version (1.9) of ucx installed.

Best regards
Filip

On 12/18/20 12:12 PM, Filip Krakowski wrote:
> Hi,
>
> I ran the code on Linux (CentOS Linux release 8.1.1911) after 
> installing the "ucx" package (version 1.9). I will create a Docker 
> container with the environment to reproduce this issue for easier 
> debugging.
>
> Best regards
> Filip
>
> On 12/17/20 10:49 PM, Maurizio Cimadamore wrote:
>> Hi,
>> I haven't seen this particular one.
>>
>> What platform are you on? What do you need to reproduce?
>>
>> Thanks
>> Maurizio
>>
>> On 17/12/2020 18:43, Filip Krakowski wrote:
>>> Hi,
>>>
>>> I work on a simple wrapper for ucx (https://github.com/openucx/ucx) 
>>> and am experiencing a segmentation fault when calling any generated 
>>> method. The strange thing is that the segmentation fault disappears 
>>> as soon as I attach a (remote) debugger and manually step through 
>>> the code.
>>>
>>>   * Screenshot - https://i.imgur.com/okl3epv.png
>>>
>>> My code does only access a struct's layout. I don't create any 
>>> additional threads.
>>>
>>>    log.info("Starting");
>>>    var layout = ucp_params_t.$LAYOUT();
>>>    log.info("{}", layout);
>>>
>>> The generated layout looks like this.
>>>
>>>    static final MemoryLayout ucp_params$struct$LAYOUT_ =
>>>    MemoryLayout.ofStruct(
>>>             C_LONG.withName("field_mask"),
>>>             C_LONG.withName("features"),
>>>             C_LONG.withName("request_size"),
>>>             C_POINTER.withName("request_init"),
>>>             C_POINTER.withName("request_cleanup"),
>>>             C_LONG.withName("tag_sender_mask"),
>>>             C_INT.withName("mt_workers_shared"),
>>>             MemoryLayout.ofPaddingBits(32),
>>>             C_LONG.withName("estimated_num_eps"),
>>>             C_LONG.withName("estimated_num_ppn")
>>>    ).withName("ucp_params");
>>>
>>>
>>> Is this a known Issue? I use the latest build from last night.
>>>
>>> Best regards
>>> Filip
>



More information about the panama-dev mailing list