Bug description:
I’m trying to run a .NET linux executable in a Python environment, but I either get: version 'GLIBC_2.33' not found (required by /nix/store/mdck89nsfisflwjv6xv8ydj7dj0sj2pn-gcc-11.3.0-lib/lib/libstdc++.so.6)
or symbol lookup error: /nix/store/4nlgxhb09sdr51nc9hdm8az5b08vzkgx-glibc-2.35-163/lib/libc.so.6: undefined symbol: _dl_fatal_printf, version GLIBC_PRIVATE
Expected vs Current Behavior:
Expected: Python environment should successfully open the .NET executable
Current: version 'GLIBC_2.33' not found (required by /nix/store/mdck89nsfisflwjv6xv8ydj7dj0sj2pn-gcc-11.3.0-lib/lib/libstdc++.so.6)
or symbol lookup error: /nix/store/4nlgxhb09sdr51nc9hdm8az5b08vzkgx-glibc-2.35-163/lib/libc.so.6: undefined symbol: _dl_fatal_printf, version GLIBC_PRIVATE
Steps to reproduce:
Create and compile/publish a .NET linux app, self-contained or not, publish to a python environment, open the shell, try to run the executable
Bug appears at this link: https://replit.com/@testperson24/EminentSufficientPrinter#server.py
Replit Profile: https://replit.com/@testperson24
1 Like
After building the .NET app with these settings (PublishSingleFile, PublishTrimmed, PlatformTarget, TargetFramework), I’ve managed to get a consistent symbol lookup error: /nix/store/4nlgxhb09sdr51nc9hdm8az5b08vzkgx-glibc-2.35-163/lib/libc.so.6: undefined symbol: _dl_fatal_printf, version GLIBC_PRIVATE
which is way better than before, I guess.
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PlatformTarget>x64</PlatformTarget>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>true</PublishTrimmed>
</PropertyGroup>
CMD: dotnet publish --os linux --self-contained
EDIT: Also had to add this to replit.nix to get this output ^
deps = [
pkgs.clang_12
pkgs.ccls
pkgs.gdb
pkgs.gnumake
pkgs.glibc
]
1 Like
Is this for Windows? Replit runs on Linux and so Windows-specific program will not run properly (if at all). The OS your device runs is irrelevant as the code is running on Replit’s server.
2 Likes
No, I’m compiling this onto Linux, from my Windows machine.
1 Like
Update: I’ve managed to get the app to run in the SHELL, but not using subprocess.run/subprocess.Popen, even though i’m running the exact same command, in shell:
~/EminentSufficientPrinter$ dotnet/dotnet "chatter/chatter.dll" IP PORT UUID
[15:53:21] Received data: start
#^ this is from my app
from python env:
/home/runner/EminentSufficientPrinter/dotnet/dotnet: symbol lookup error: /nix/store/4nlgxhb09sdr51nc9hdm8az5b08vzkgx-glibc-2.35-163/lib/libc.so.6: undefined symbol: _dl_fatal_printf, version GLIBC_PRIVATE
dotnet build info:
command line command: dotnet publish -c Release --os linux --self-contained true
.csproj file:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PlatformTarget>x64</PlatformTarget>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>