Blogs

Latest release of licensed socket server code: 5.2.4

The latest release of The Server Framework is now available. This release includes the following changes. The following changes were made to the libraries. Admin Library - 5.2.4 We no longer support Visual Studio 6. We now compile with /Wall (in VS2005 and later) to enable all warnings, even those that are disabled by default. Of course this means that the list of warnings that we disable in Warnings.h has grown a little.

DevPartner Studio 9.0 and VS2008

It seems that there’s a ‘known issue’ with DevPartner studio’s instrumentation and VS2008. Apparently the compiler architecture changed somewhat between VS2005 and VS2008 and sometimes the instrumentation is incorrect which is the cause of my ‘strange crashes’ with DevPartner 9.0. There’s no patch available at this time…

Comments are off for a while

I’m in the process of moving the blog from one host to another and until I get all of the perl configuration working so that the various comment spam protection methods are working properly I’m turning off comments. Email me if you have a comment to add.

DevPartner Studio 9.0

I’ve just updated my installation of DevPartner Studio. I mainly use the C++ error detection part of this suite, that’s the bit that used to be called BoundsChecker. Anyway, version 9.0 is the first version to support VS2008 and x64 so I was quite excited to be able to run the tool on my dev box rather than on my old x86 dev box. Unfortunately my first impressions aren’t good. Here’s some of the output from the build window whilst the build is being built for “Error detection”.

Lock contention

I had reason to run my deadlock detection tool on a server built with an old version of The Server Framework as I needed to make changes to the server’s locking strategy and I wanted to make sure that I didn’t cause any lock inversions. The tool worked well and I tweaked it a little more to make it run faster (considerably faster actually!) and report better… The speed increase was pretty dramatic and consisted of adding a new option to the tool to prevent it from monitoring lock operations for locks that we have never seen created.

/Wall

I’ve been compiling with /W4 for some time now. I didn’t realise that this wasn’t the best you could get. There are some warnings which are not enabled by default and therefore aren’t included in /W4. To enable these you need to specify /Wall. The list for Visual Studio 2008 is here. Obviously there are some warnings that I don’t find that useful, but these can either be disabled as and where I need to with #pragma warning or globally in my ‘Warnings.

Goodbye old friend

As of release 5.2.4, which is due for release in December, we will no longer support Visual Studio 6 builds of The Server Framework. I’ve recently had to deal with some weird multi-threaded problems for a client and upgrading them from Visual Studio 6 to Visual Studio 2005 seemed to remove several STL related issues. I then did some research and decided that it simply wasn’t worth supporting the old compiler any longer if the first thing that I’d do if a client had problems would be to recommend they upgrade the compiler…

Asynchronous SChannel Servers

I’m currently working on an SChannel version of the asynchronous SSL connector code that we use to provide SSL support in The Server Framework. This will eventually be an alternative to the existing OpenSSL support that we currently provide and should prove useful for people who want a tighter integration with Microsoft’s Certificate Stores than our current OpenSSL support provides. In many ways the SChannel version of the code is more complex to implement than the OpenSSL version as the OpenSSL SSL_CTX context object deals with data accumulation and record splitting internally; you just push bytes into it and it eventually pushes cleartext out at you.

STLPort 5.1.5 and VS2008 and x64

I’ve been meaning to build STLPort for Visual Studio 2008 for some time now but as the STL support that ships with Visual Studio has been improved the urgency to be able to use an alternative has reduced. Unfortunately STLPort 5.1.5 doesn’t build for VS2008 out of the box so it wasn’t simply a case of downloading it and building it. Anyway, I asked a question about it on StackOverflow and got an answer which linked to a blog posting from someone who had hacked the VC8 build to work with VC9.