Coder Accuses IBM of Patenting His Work
ttsiod writes "Back in 2001, I coded HeapCheck, a GPL library for Windows (inspired by ElectricFence) that detected invalid read/write accesses on any heap allocations at runtime — thus greatly helping my debugging sessions. I published it on my site, and got a few users who were kind enough to thank me — a Serbian programmer even sent me $250 as a thank you (I still have his mails). After a few years, Microsoft included very similar technology in the operating system itself, calling it PageHeap. I had more or less forgotten this stuff, since for the last 7 years I've been coding for UNIX/Linux, where valgrind superseded Efence/dmalloc/etc. Imagine my surprise when yesterday, Googling for references to my site, I found out that the technology I implemented, of runtime detection of invalid heap accesses, has been patented in the States, and to add insult to injury, even mentions my site (via a non-working link to an old version of my page) in the patent references! After the necessary 'WTFs' and 'bloody hells' I thought this merits (a) a Slashdotting, and (b) a set of honest questions: what should I do about this? I am not an American citizen, but the 'inventors' of this technology (see their names in the top of the patent) have apparently succeeded in passing this ludicrous patent in the States. If my code doesn't count as prior art, Bruce Perens's Efence (which I clearly state my code was inspired from) is at least 12 years prior! Suggestions/cursing patent trolls most welcome."
FWIW, your site wasn't cited by IBM's application, but by the USPTO examiner.
http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=%2Fnetahtml%2FPTO%2Fsearch-bool.html&r=1&f=G&l=50&co1=AND&d=PTXT&s1=7552305.PN.&OS=PN/7552305&RS=PN/7552305
No kidding!!! What do you say at this point?
Unless you sue IBM and have very deep pockets once someone has stolen your idea and had the theft accredited by the rating agency (patent office) you are essentially screwed. You may file an appeal, but then the burden of proof is on you.
Tesla and Marconi had similar ideas around the same time but the patent office ruled in favor of Marconi, you my friend may be a Tesla at this point.
As with all patents read Claim No 1. It should contain the novel element, you cannot leave it for later. The "novelty" in this one is that you do not need to recompile the program the way original efence worked.
However, times have changed since the days of the original Efence and things are linked dynamically at runtime on all OSes which in turn means that any LD_PRELOAD-ed Efence like debugging library which relies on OS R/W page management to control access is prior art. It satisfies literally the requirements of claim 1.
I do not recall off the top of my head what valgrind uses, but I would not be surprised if it fits the bill. The original Efence does not - it has to be linked in.
Baker's Law: Misery no longer loves company. Nowadays it insists on it
http://www.sigsegv.cx/
Back in 1990, I redid the Borland Pascal memory allocator so each block was given its own hardware-protected segment descriptor and length. Worked magnificently, as any reference outside a valid block would immediately fault. Only prob, you could only allocate about 4000 blocks as there were only 4,096 entries in the hardware segment table. So the next refinement was to allocate each block with short pre and postambles set to $12345678 and check thee for overwriting periodically. Worked almost as well, if not so immediately finding the errors.
And no, I did not try to patent this, as I knew the Burroughs machines, since 1961, allocated a fresh memory-protected segment for each array, and using pre and post safety zones sure sounded like an "obvious" thing to do..
I only take an issue with your last paragraph - I certainly didn't leave the code in a graveyard, I released it with an open source license, so that anyone could use it and make his life a bit better. The fact that 10 years later, someone else has now patented the ideas in Electric Fence and HeapCheck, and can now sue me and everyone else using it, is what got me mad (hence the "trolls" comment).
Before spouting off about how the USPTO sucks so much ass solely on the basis of what the OP says, first try a little independent research. You can look up the entire prosecution history of the application in question on the USPTO's website at Public PAIR.
First off, the guy's website was cited by the examiner rather than by IBM. The examiner used the OP's website to reject the claims three times before IBM's attorney finally came around and amended the claims to include this:
wherein setting the allocation mode for the process to enable determining in real-time an invalid access is performed in real-time, and wherein the setting sets the allocation mode for an application executed by the process without requiring recompiling, linking or loading of the application to set, in real-time, the allocation mode for the application
This was cited by the examiner in the reasons for allowance. Does the OP's code do this?
Once again, this is an example of people who know very little about the patent system reading the abstract or looking at the figures, and not understanding that the really important part of the application is the claims. Nothing to see here, move along.