The problem with C's volatile qualifier

The real problem with C's volatile (well, one of them) is that volatile only affects the compiler; it doesn't normally make thecompiler do anything to affect the CPU's interaction with memory. Onmodern hardware, merely affecting the compiler is not enough; theCPU/memory interface has its own optimizations, which must be dealt withtoo for shared-state code to work right.

From the perspective of history this makes a lot of sense, becauseANSI C mostly predates CPU memory controllers


My current views on webmail providers

I have come to a grumpy realization recently:

Unsecured webmail systems are today's open SMTP relays, and it'shigh time that they got treated the same way.

The comparison is all the more striking because (once) major ISPsappear to have decided that they can run open webmail systemswithout consequences, much as people once shrugged off runningopen SMTP relays.

(I am particularly depressed by the move of places like rr.com,comcast.net, and adelphia.net into webmail systems that are


Link: Threads Cannot be Implemented as a Library

I've already linked to this in passing , but I'm going to rerun itas an explicit link. Threads Cannot be Implemented as a Library by HansBoehm makes the argument in its title:

We provide specific arguments that a pure library approach, in whichthe compiler is designed independently of threading issues, cannotguarantee correctness of the resulting code.

There is also a discussion of this paper at Lambda the Ultimate that may be interestingreading. On a quick skim of the LtU discussion thread, thisUsenet article


Solaris's impressive ABI compatibility

There are some things that Solaris is very good at; one of them isuser-level ABI compatibility (at least for basic programs). As anillustration of just how good it is, I only recently noticed that on ourSolaris 8 machines I am still routinely using some dynamically linkedprograms compiled in August of 1993 (which is probably when this groupstarted using Solaris machines).

I hadn't noticed before now because the programs hadn't really changedsince then (so I had no


A (Solaris 8) automounter irritation

Here's an automounter irritation that keeps biting us: on fileservers,the Solaris 8 automounter is not smart enough to notice when anunderlying /export/ mount point has been unmounted.

If it gets a request for the filesystem, it 'mounts' things anyways,which then fouls up various aspects of, say, remounting the realfilesystems. It is remarkably difficult to persuade the automounter tolet go so that you can restore things to normality, and you can't justshoot the entire automounter


Weekly spam summary on December 30th, 2006

The SMTP frontend died twice late Friday night, to my irritation.That said, this week we:

  • got 9,806 messages from 186 different IP addresses.
  • handled 15,551 sessions from 916 different IP addresses.
  • received something over 204,995 connections from at least58,611 different IP addresses.
  • hit a highwater of at least 6 connections being checked at once.

The message count is down dramatically from last week because this week


What can go wrong if your compiler is not thread aware

Courtesy of Pete Zaitcev ,here's a great example of what happens when optimizing compilers aren'tthread aware.

Start with code of the form:

struct a b;
b.pos = *ppos;ret = foo(&b, ..., b.pos);

Modern versions of gcc 4 on x86 will optimize the function call into:

ret = foo(&b, ..., *ppos );

(This is a less stupid optimization than it looks; ppos


A thought on the advance of X auto-configuration

That X needs a configuration file less and less makes it more and moreimportant to have your monitor(s) powered on when you're powering on orrebooting a machine, because otherwise X won't be able to get the DDC information it needsto do most of that nice automatic configuration. A side effect of thisis killing off BNC monitor connectors, because you can't do DDC overBNC.

(Yes, I still have a CRT monitor at home, and until recently I was usinga


Solaris 8 DiskSuite's lack of good monitoring

One of the things that irritates me about DiskSuite in Solaris 8 is howhalf-hearted the provisions for automated monitoring and reporting are.I don't necessarily ask that DiskSuite have all of this pre-built, butI would like commands that had output that at least made it relativelyeasy to build this ourselves, and DiskSuite falls flat on this.

Metastat will tell you all of the necessary information, but it does itin a verbose, human-readable format that is sufficiently complicated andunderdocumented that I get


HTTP as it is seen in the wild

Out of a somewhat idle curiosity, I decided to do up some numbers foractual HTTP requests against one of the servers here. All of this isusing the past 28 days of old logs (plus today's):

289160 total requests277323 GET  5722 PROPFIND  3665 OPTIONS  2215 POST   178 HEAD    39 CONNECT    18 garbled

Most of the requests were successful; 90% got a 2xx or