Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mono Bug : Magic number is wrong: 542

Tags:

c#

mono

I am trying to compile a C# Hello World application in Rider on Linux. When I try to run the app, I am promted the following exception:

Unhandled Exception:
System.TypeInitializationException: The type initializer for 'System.Console' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.ConsoleDriver' threw an exception. ---> System.Exception: Magic number is wrong: 542
at System.TermInfoReader.ReadHeader (System.Byte[] buffer, System.Int32& position) [0x00028] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.TermInfoReader..ctor (System.String term, System.String filename) [0x0005f] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.TermInfoDriver..ctor (System.String term) [0x00055] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.ConsoleDriver.CreateTermInfoDriver (System.String term) [0x00000] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.ConsoleDriver..cctor () [0x0004d] in <a84b655e5e6a49ee96b338ec792f5580>:0
--- End of inner exception stack trace ---
at System.Console.SetupStreams (System.Text.Encoding inputEncoding, System.Text.Encoding outputEncoding) [0x00007] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.Console..cctor () [0x0008e] in <a84b655e5e6a49ee96b338ec792f5580>:0
--- End of inner exception stack trace ---
at TestCaseApp.Program.Main (System.String[] args) [0x00001] in <662667bfa1e4443ea031df076247d2d3>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'System.Console' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.ConsoleDriver' threw an exception. ---> System.Exception: Magic number is wrong: 542
at System.TermInfoReader.ReadHeader (System.Byte[] buffer, System.Int32& position) [0x00028] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.TermInfoReader..ctor (System.String term, System.String filename) [0x0005f] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.TermInfoDriver..ctor (System.String term) [0x00055] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.ConsoleDriver.CreateTermInfoDriver (System.String term) [0x00000] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.ConsoleDriver..cctor () [0x0004d] in <a84b655e5e6a49ee96b338ec792f5580>:0
--- End of inner exception stack trace ---
at System.Console.SetupStreams (System.Text.Encoding inputEncoding, System.Text.Encoding outputEncoding) [0x00007] in <a84b655e5e6a49ee96b338ec792f5580>:0
at System.Console..cctor () [0x0008e] in <a84b655e5e6a49ee96b338ec792f5580>:0
--- End of inner exception stack trace ---
at TestCaseApp.Program.Main (System.String[] args) [0x00001] in <662667bfa1e4443ea031df076247d2d3>:0

I am using Antergos (Linux) and JetBrains Rider 2017.3.1 Build #RD-173.3994.2442 I have am using Mono 5.4.1.7-2

I did some research about this bug and I found:

https://github.com/mono/mono/issues/6752#issuecomment-365212655

Mono compiler // Terminal emulator issue

Everything mentioned in these threads didn't help me to fix this issue. What can I do?

like image 641
Kyu96 Avatar asked Mar 12 '18 18:03

Kyu96


2 Answers

Did you not follow the instructions on that page? You need to set your TERM environmental variable to xterm as a fix:

export TERM=xterm

Then verify it is changed with:

echo $TERM
like image 91
Roflsausage Avatar answered Oct 29 '22 00:10

Roflsausage


The means exactly this: "I want to run your script, but you need to specify the terminal you want me to use"

In GoG version of Stardew Valley, the script in question is: ./start.sh Launching this causes the above error. If instead:

export 'TERM=roxterm' && ./start.sh

then it works because I have the roxterm terminal installed on my system and the script can use it to execute. What I do know is the global parameter in Ubuntu that tells scrips use this unless it is: Default Applications

Looking at snippet of the script, originally it is:

run_game() {
    echo "Running ${GAME_NAME}"
    cd game
    chmod +x *   
    ./"StardewValley"
}

Corrected for roxterm it would be:

run_game() {
    echo "Running ${GAME_NAME}"
    cd game
    chmod +x *   
 export 'TERM=roxterm' && ./"StardewValley"
}

The latter solution works with application launchers and is thus superior.

like image 20
JediMaster Avatar answered Oct 29 '22 02:10

JediMaster