Jump to content
The simFlight Network Forums

FSUIPC_Open() failure


Recommended Posts

Hello,

I got a report of an error with my addon utility that uses FSUIPC. The utility works for the large majority of users and this is the first report I got of an initialisation error. The lastest version of FSUIPC was used and the log shows:

   661860 Client Application: "FSeconomy" (Id=3252)
   661860 D:\games\FSTools\FSeconomy.exe
   661860    Product="FSeconomy agent"
   661860    Company="Marty Bochane"
   661860  READ0 [P3252]  3304,   4 bytes: 02 00 00 00
   661860  READ0 [P3252]  3308,   4 bytes: 02 00 00 00
   661860 WRITE0 [P3252] (failed, read-only!) 330A,   2 bytes: EC 03 

The library generates these calls in the FSUIPC_open() function:

		// Write our Library version number to a special read-only offset
		// This is to assist diagnosis from FSUIPC logging
		// But only do this on first try
		if ((i < 2) && !FSUIPC_Write(0x330a, 2, &FSUIPC_Lib_Version, pdwResult))
		{	FSUIPC_Close();
			return FALSE;
		}

The documentation says that 0x330a is a read only pattern of 0xFADE and that indeed the library writes its version here. Can anybody help me identify why FSUIPC seems to report an error here? As I said, I only got one report of this and the majority of users have no problems.

Thanks!

Marty

Link to comment
Share on other sites

As I seem to recall this offset is indeed read only so an attempt to write to it will result in FSUIPC reporting an error. Does it have any material effect on the user then?

Yes, the code I posted is directly from the C library, so it is the FSUIPC_open () call that fails. This code is called by every client and works everywhere, but seems to fail on one computer.

Link to comment
Share on other sites

so it is the FSUIPC_open () call that fails

I just tested it on my machine with a program I've written earlier using the C library. I get the same message:

   314473  READ0 [P3972]  3304,   4 bytes: 00 00 50 34 
   314473  READ0 [P3972]  3308,   4 bytes: 07 00 DE FA 
   314473 WRITE0 [P3972] (failed, read-only!) 330A,   2 bytes: ED 03

However, my fsuipc->write() doesn't fail for that reason. I believe that we must rather treat the log message as a warning. From your post, however, it's a bit unclear if your program bails out on this.

If it does, check the return value of the write() call (using single-stepping). It should definitely not fail. If anything fails, I expect this to be visible in the return value of the process() call. Have you actually checked this value ? It is one of the FSUIPC_ERR_... defines.

If your program continues to work fine, I wouldn't bother and not forget to turn off the logging...

Regards,

J.

Link to comment
Share on other sites

  • 3 weeks later...

The documentation says that 0x330a is a read only pattern of 0xFADE and that indeed the library writes its version here. Can anybody help me identify why FSUIPC seems to report an error here? As I said, I only got one report of this and the majority of users have no problems.

This is not an initialisation error and it will not affect any program adversely. The whole point is for the library to deliberately try writing its version number to a read-only location so it will be logged, so that I can see the version number.

Unfortunately the version number hasn't been kept up to date so it isn't much use in fact.

However, ALL versions of the library have done this since FS2000 days, and FSUIPC has ALWAYS logged it. This is not recent nor unique to one person's system or one program. ALL programs and ALL versions of FSUIPC do it on ALL machines ALWAYS.

Regards,

Pete

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. Guidelines Privacy Policy We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.