2025-07-18 13:26 CEST

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0001102Spring engineGeneralpublic2011-08-25 03:31
ReporterAMDmi3 
Assigned Toabma 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionunable to reproduce 
Product Version0.77b2 
Target VersionFixed in Version 
Summary0001102: `FPUCW 0x107F instead of 0x003A or 0x003F' message spamming the console on FreeBSD
DescriptionOn FreeBSD, game console and log file are constantly spammed with those messages:

Sync warning: FPUCW 0x107F instead of 0x003A or 0x003F ("CGame::SimFrame")
Sync warning: FPUCW 0x107F instead of 0x003A or 0x003F ("CGame::Update")

not quite sure what requirements on FPU behavior spring has, but seems like it's either too paranoid in it's checks or some FPU initialization is missing.

The difference from expected CW state are apparently bit 0x1000 (infinity control) and 0x0040 - not sure what it is.
TagsNo tags attached.
Checked infolog.txt for Errors
Attached Files

-Relationships
related to 0000341closedtvo "Assertion Failed" - crash on ANY multiplayer game launch (fpu control word) 
related to 0000938closed [PATCH] Sync warning fix to ignore unexpected value in unused 'X' bit of fpu control word 
+Relationships

-Notes

~0002756

imbaczek (reporter)

spring has to be paraoind about setting the FPU control word since different results lead to desynced games, see butterfly effect etc. if you look around here or on the forums, you'll see that it's not a new problem with FreeBSD.

~0002763

AMDmi3 (reporter)

I've only found thread about similar issue on windows, without any useful fix. Any way I can help with fixing this?

~0002766

tvo (reporter)

This has been patches already in 0000938, but I will only apply the patch when it has been confirmed to not break sync.

(The 0x0040 seems new tho..)

~0002772

AMDmi3 (reporter)

Last edited: 2008-10-10 16:32

0x0040 is marked as reserved in both Pentium4 (which I use) and Core2duo (as a modern processr) manuals from Intel.

Also (from core2duo manual):

8.1.6 Infinity Control Flag
The infinity control flag (bit 12 of the x87 FPU control word) is provided for compati-
bility with the Intel 287 Math Coprocessor; it is not meaningful for later version x87
FPU coprocessors or IA-32 processors. See Section 4.8.3.3, ?óÔé¼?ôSigned Infinities,?óÔé¼?Ø for
information on how the x87 FPUs handle infinity values.

So I think it's safe to ignore both.

~0003571

AMDmi3 (reporter)

Sorry, why was this closed? The issue is still there,

Sync warning: MXCSR 0x1FB7 instead of 0x1D00 or 0x1F80 ("CGame::Update")
Sync warning: FPUCW 0x107F instead of 0x003A or 0x003F ("CGame::Update")
Sync warning: MXCSR 0x1FB7 instead of 0x1D00 or 0x1F80 ("CGame::SimFrame")
Sync warning: FPUCW 0x107F instead of 0x003A or 0x003F ("CGame::SimFrame")

~0003581

Kloot (developer)

Last edited: 2009-06-01 15:16

It's still there because the 0000938 patch to ignore 0x1000 was never applied (since the submitter didn't report back about testing it). Likewise nobody has yet tried to test sync without 0x0040 set. And although probably neither of the two flags is important, we do rather need absolute guarantees.

PS. until test data is available, you could of course just #ifdef out the logOutput lines...

~0003582

AMDmi3 (reporter)

Ok, thanks for clarification. Changing mask 0x1F3F -> 0x0F3F works for me for now.

~0003584

imbaczek (reporter)

please explicitly confirm that it works in multiplayer without desyncs.

~0003585

AMDmi3 (reporter)

I didn't test on multiplayer yet, will try today.

~0003760

hoijui (reporter)

..how did the test go? :D

~0004283

AMDmi3 (reporter)

Sorry for delay, finally I've managed to get my hands on it. There are sync errors between FreeBSD and Linux. FreeBSD<->FreeBSD seem to work without problems (on the same host). Btw, all floats ingame are sometimes dispalyed as 1.0000000000000312 instead of 1, maybe that's related.

~0004284

hoijui (reporter)

mmm ok...
maybe you could do sync debugging then. instructions can be found here:
http://springrts.com/wiki/Debugging_sync_errors
you may come to the dev channel on the lobby (#sy) if you have problmes, qeustions, or want to discuss the results.

~0004285

AMDmi3 (reporter)

Here's syncdebug output:
http://amdmi3.ru/files/springsync/

===> Mon Nov 2 00:23:19 2009 <===
Server: got checksum response from 1
Client: checksum response sent
Server: got checksum response from 0
Server: queuing block requests
Server: blocks: 2047 equal, 1 not equal
Server: checksum responses received; 1 block requests queued
Client: block response sent for block 0
addr2line command : 'addr2line "--exe=/home/amdmi3/projects/spring/bin/spring" --functions --demangle --inline 0x83109e4 0x82ffde2 0x839da73 0x839e5ce 0x88fa55d'
Server: block responses received
Server: position in history: 1153
Server: chk C189D275 instead of 473DBD64 frame 000000, (value=90be48c2 -7.50538872e-29) backtrace 1 in "copyunsigned int"
Server: chks: 2047 equal, 1 not equal
Server: === Backtrace 1 ===
Server: #0 SyncedPrimitive [/home/amdmi3/projects/spring/spring_0.80.5.1/rts/System/Sync/SyncedPrimitive.h:103]
Server: #1 CGame [/home/amdmi3/projects/spring/spring_0.80.5.1/rts/Game/Game.cpp:459]
Server: #2 CPreGame::UpdateClientNet() [/home/amdmi3/projects/spring/spring_0.80.5.1/rts/Game/PreGame.cpp:236]
Server: 0000003 CPreGame::Update() [/home/amdmi3/projects/spring/spring_0.80.5.1/rts/Game/PreGame.cpp:154]
Server: 0000004 SpringApp::Update() [/home/amdmi3/projects/spring/spring_0.80.5.1/rts/System/SpringApp.cpp:850]
Server: Done!

~0007287

abma (administrator)

uhm... please retry with current spring master, maybe its fixed
+Notes

-Issue History
Date Modified Username Field Change
2008-10-10 13:45 AMDmi3 New Issue
2008-10-10 14:16 imbaczek Note Added: 0002756
2008-10-10 14:52 AMDmi3 Note Added: 0002763
2008-10-10 15:32 tvo Relationship added related to 0000948
2008-10-10 15:32 tvo Relationship added related to 0000341
2008-10-10 15:32 tvo Relationship deleted related to 0000948
2008-10-10 15:33 tvo Relationship added related to 0000938
2008-10-10 15:35 tvo Note Added: 0002766
2008-10-10 16:13 AMDmi3 Note Added: 0002772
2008-10-10 16:13 AMDmi3 Note Edited: 0002772
2008-10-10 16:32 AMDmi3 Note Edited: 0002772
2009-03-31 15:55 Auswaschbar Status new => closed
2009-03-31 15:55 Auswaschbar Resolution open => suspended
2009-05-31 22:55 AMDmi3 Note Added: 0003571
2009-05-31 22:55 AMDmi3 Status closed => new
2009-05-31 22:55 AMDmi3 Resolution suspended => reopened
2009-06-01 15:12 Kloot Note Added: 0003581
2009-06-01 15:15 Kloot Note Edited: 0003581
2009-06-01 15:16 Kloot Note Edited: 0003581
2009-06-01 15:31 AMDmi3 Note Added: 0003582
2009-06-01 15:58 imbaczek Note Added: 0003584
2009-06-01 16:01 AMDmi3 Note Added: 0003585
2009-07-25 11:15 hoijui Note Added: 0003760
2009-07-25 11:15 hoijui Status new => feedback
2009-11-01 00:35 AMDmi3 Note Added: 0004283
2009-11-01 10:59 hoijui Note Added: 0004284
2009-11-01 22:40 AMDmi3 Note Added: 0004285
2011-08-25 03:31 abma Note Added: 0007287
2011-08-25 03:31 abma Status feedback => resolved
2011-08-25 03:31 abma Resolution reopened => unable to reproduce
2011-08-25 03:31 abma Assigned To => abma
+Issue History