OSError: /usr/lib/aarch64-linux-gnu/libgomp.so.1 ONLY IN JUPYTER NOTEBOOK

I am using the Jetbot 0.4.3 (with Jetpack 4.4.1). I am running the jupyterlab remote connection server.

I get the error

OSError: /usr/lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block

when trying to import torch inside jupyter notebook. I am aware that you can use:

export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1

to fix this issue but it doesn’t work for me. HOWEVER, I get no error if I import torch inside the Python CLI terminal.

What Can I do?

Hi @tmendozarias, if you run % echo $LD_PRELOAD inside your Jupyter notebook, does it show the /usr/lib/aarch64-linux-gnu/libgomp.so.1 path that you set it to? If not, Jupyter must not be picking up that environment variable and maybe you can run % export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1 at the top of your notebook.

Here is another potential solution to try (just with setting LD_PRELOAD instead of the environment variable that gets set in the issue below):

It seems that Jupyter spawns a separate process to execute the Python code from the notebook, which is why it’s not picking up the LD_PRELOAD variable that you set before.

Hi @dusty_nv . Thanks for the quick reply. Yes, running % echo $LD_PRELOAD does show /usr/lib/aarch64-linux-gnu/libgomp.so.1.

I also tried % export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1 at the top of the notebook but it still gives error importing torch.

@dusty_nv As i understand, the command c = get_config() is deprecrated. Am I correct? Because i ran it and it told me that get_config() is not defined.

I was able to solve the problem by modifying the service file that runs the jupyterlab for remote connection. I added the export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1 in the ExecStart line and now it works. Thanks for your help!

OK great, glad you were able to get it working! Thanks.

Hello,I want to know the service file you modified is jupyter_notebook_config.py? and where is the ExecStart line? thank you !!

The problem I was having and what I think the OP was talking about was using a service to run the jupyter notebook server. Apparently systemd won’t use the library unless you explicitly tell it in the service file. I had to add

[Service]
Environment=“LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1”

don’t forget to daemon-reload