View Issue Details

IDProjectCategoryView StatusLast Update
0001102Spring engineGeneralpublic2011-08-25 03:31
ReporterAMDmi3 Assigned Toabma  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionunable to reproduce 
Product Version0.77b2 
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

Relationships

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

Activities

imbaczek

2008-10-10 14:16

reporter   ~0002756

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.

AMDmi3

2008-10-10 14:52

reporter   ~0002763

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

tvo

2008-10-10 15:35

reporter   ~0002766

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..)

AMDmi3

2008-10-10 16:13

reporter   ~0002772

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.

AMDmi3

2009-05-31 22:55

reporter   ~0003571

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")

Kloot

2009-06-01 15:12

developer   ~0003581

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...

AMDmi3

2009-06-01 15:31

reporter   ~0003582

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

imbaczek

2009-06-01 15:58

reporter   ~0003584

please explicitly confirm that it works in multiplayer without desyncs.

AMDmi3

2009-06-01 16:01

reporter   ~0003585

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

hoijui

2009-07-25 11:15

reporter   ~0003760

..how did the test go? :D

AMDmi3

2009-11-01 00:35

reporter   ~0004283

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.

hoijui

2009-11-01 10:59

reporter   ~0004284

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.

AMDmi3

2009-11-01 22:40

reporter   ~0004285

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!

abma

2011-08-25 03:31

administrator   ~0007287

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

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