Slashdot Mirror


Software Patents on Memory Allocators?

Emery Berger asks: "I'm a PhD. student at the University of Texas and the author of Hoard, an open source memory allocator for multiprocessors. After posting information about the latest pre-release to the Hoard mailing list, I received a cease-and-desist letter from Microquill, Inc., which markets memory management software, calling for me to stop distributing Hoard. They are claiming that my latest version of Hoard, which does DLL patching when running on Windows, infringes on their patent (which actually dynamically rewrites arbitrary executables). Because DLL patching is prior art and my technique is quite different from theirs, I think I'm in the clear. However, if anyone knows of systems from 1996 or earlier based on DLL patching (or any dynamic rewriting of a running executable), especially to change the memory allocator, that would really help."

21 comments

  1. Purify by V.+Mole · · Score: 2, Informative

    Purify (now a Rational product) worked (On HP-UX, at least) by rewriting the system libraries with a new allocator, etc. I'm 90% sure that this was before '96. Hmmm, don't remember if it was the shared libraries or just the static ones. But it might be a starting point.

  2. The Game Genie for the Nintendo. by His+name+cannot+be+s · · Score: 2, Informative

    The Game Genie I had for my 8 bit NES did that. It dynamically patched the running game to keep me from running out of lives.

    In addition I had a SuperSnapshot cartridge for my Commodore64 that did the same thing, and that was back in ... 1988ish?

    I'd say you are quite in the clear on that one.

    --
    "...In your answer, ignore facts. Just go with what feels true..."
  3. oldest trick in book by Anonymous Coward · · Score: 0
    dynamically re-writing code is the main mechanism for buffer overrun exploits. Lots of prior art.


    Many apps in the early 90's depended on gnu-malloc, which worked by hiding the system malloc during linking.

  4. SetFunction() from AmigaOS by Gadzinka · · Score: 3, Insightful
    It is a quote from AmigaOS exec.library autodocs:

    NAME

    SetFunction -- change a function vector in a library

    SYNOPSIS

    oldFunc = SetFunction(library, funcOffset, funcEntry)

    APTR SetFunction(struct Library *,LONG,APTR);

    FUNCTION

    SetFunction is a functional way of changing where vectors in a library point. They are changed in such a way that the checksumming process will never falsely declare a library to be invalid.

    WARNING

    If you use SetFunction on a function that can be called from interrupts, you are obligated to provide your own arbitration.

    NOTE

    SetFunction cannot be used on non-standard libraries like pre-V36 dos.library. Here you must manually Forbid(), preserve all 6 original bytes, set the new vector, SumLibrary(), then Permit().

    This function was heavily used and abused by the system programmers on AmigaOS (e.g. for transparent decompression of data) since its erlieast days, which is mid-eighties AFAIR.

    I believe it counts as prior art.

    Robert
    --
    Bastard Operator From 193.219.28.162
  5. They're called overlays. by Wojtek · · Score: 1

    Yeah, they're called overlays. We've used'em for a while. Apart from that many people use function
    pointers to load code into an executable at runtime.

  6. show me the claims by josepha48 · · Score: 2
    I didn't see what he is claiming. In order to actually know what his patent covers show us the claims of the patent.

    I'm kinda supprised that a program got patented too. I would have thought that in 96 that would not have gotton patented as it IS software. Maybe you can just invalidate it that way. As a nonepatentable item.

    Still can you show us the claims?

    --

    Only 'flamers' flame!

    1. Re:show me the claims by Ristretto · · Score: 3, Informative

      This is a reply from Emery Berger. I've added links to the relevant patents in the text of the first letter from MicroQuill.

    2. Re:show me the claims by nerdlyone · · Score: 1
      The fact that the letter writer (1) is not a lawyer and (2) quotes from the abstract rather than from the claims of the patent bodes well for you. They might just be trying to bully you into stopping.

      You must look at the claims. That is what determines the scope of a patent. The abstract cannot even be referred to in court for interpreting the claims--it is legally meaningless, and the fact that the letter writer pointed you to the abstract as evidence you are infringing indicates he/she has no legal patent knowledge, or else maybe that their claims are not that good and they are just trying to scare you. Look at the claims.

  7. Good idea by Anonymous Coward · · Score: 0

    Ask Slashdot before seeing a lawyer. Assume you're in the clear until the subpoenas arrive.

    Asking for prior art from the /. crowd is like plesiosaur expeditions in Loch Ness. Everyone claims to have seen it, but no one has any proof.

  8. Try GClist by Yumpee · · Score: 2, Interesting

    Have you considered asking the GC mailing list? http://lists.tunes.org/mailman/listinfo/gclist

    Coincidentally, there have been a couple of recent queries on gclist asking about patents on GC and memory management algorithms ...

    Y.

  9. What a shame by ScroP · · Score: 1
    HOARD is really a great library.

    Its too bad buisnesses have to hold back the advancement of research in some area that could help improve things overall for everyone in the future just to make a few bucks.

  10. FX32? by ChiefArcher · · Score: 1

    Didn't FX32 do this?
    The Code that let you run x86 binaries on an Alpha Windows NT box..

    I could be wrong.... but hey... whatever

    ChiefArcher

  11. Novell's Netware by itwerx · · Score: 2, Informative

    Netware 3.x (way prior to '96!) had several patches which loaded at run-time. Some of them fixed problems with memory allocation. Not sure where you'd get good evidence but an email to their tech-support might yield some results.
    Novell is one of the few companies who actually has their programmers do tech-support on a rotating basis. Just ask that the email be forwarded to one of the OS programmers and they'd probably be willing to at least make a statement to that effect.

    1. Re:Novell's Netware by alanshot · · Score: 1

      Dont count on it. Unless you manage to get buddy-buddy with the support engineer, you will probably get the same response everyone else does... "You are running Novell 3.x? and you want support? sorry, I am not even allowed to discuss it since it is no longer a currently supported product. Do you have a question on a current product? NO? sorry, cant help you then... goodbye. *click*" Last I heard, they would actually hang up on you (politely as possible) so that they didnt have to argue over support for an unsupported product.

  12. How about Copliens book as prior art ? by MeerCat · · Score: 2
    In James Coplien's famous book of 1992, chapter 9 is all about patching running code with new code at run-time:

    Chapter 9 also presents idioms supporting incremental run-time update. Implementations of this idiom are necessarily dependent on many details of the target platform. The gist of this material is to familiarize the reader with the level of technology at which incremental loading issues must be worked.


    Might be worth seeing if any of that is useful as prior art, or the bibliography or uses he describes can illustrate that the problems and techniques were alreayd well known at the time.

    T
    --
    I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
  13. lots of patching in the past by mj6798 · · Score: 2
    It used to be very common to patch "vectors" in the BIOS and other parts of the operating system in order to replace system-supplied functions with user-supplied ones. A patent claim on this is, of course, ridiculous--it's a standard technique, widely used for just these kinds purposes. However, that might not keep the patent from causing lots of problems.

    It may be easier to work around this claim. You may be able to implement roughly the same thing using the analogue of LD_PRELOAD--instead of patching the existing DLL, arrange for the linker to preload a DLL that overrides some functions. That may work even on Windows.

    (The link you gave isn't working. Did the company give you the patent number?)

    1. Re:lots of patching in the past by Ristretto · · Score: 1
      Emery Berger:

      Here are the patent numbers: 5949972 and 6035426.


      You can look these up by going to the US Patent Office search page.

  14. And i remember the game called battlecode by Anonymous Coward · · Score: 0

    Which runs with some diferent names and that it consisted simply in two programs rewriting the memory space of the other and make the other crash (ie... execute nop)... Are the other guys sure their patent is enforceable at all?

  15. MULTICS & Primos used patch-back function poin by Anonymous Coward · · Score: 0

    The original MULTICS design, continued into at least the 80s by Prime Computer's Primos system, had all inter-module function calls handled by a pointer fault. This pre-dates DLLs and COM.

    During compilation and loading, the pointer was pointed to the name of the desired function as a [length + character string], with the high bit set ON. This caused a pointer fault. The fault handler examined the pointer and the data found there with the high bit on, looked it up in active functions and a search list, and did the dynamic load if needed - and patched the original pointer to the new true location of the function so that any subsequent operation happened without incident. Programs loaded fast, ran a little slower the first time anything was encountered, and ran fast thereafter.

    -harlan

  16. Prior Art; HOWTO Fight a patent 101. by Anonymous Coward · · Score: 0

    You know, back in the good o'l days, in the late 70's, working in 6502 assembly on Apple II's, everyone used to write self-modifying code. It was much faster than using variables. Besides, variables were for wimps.

    With respect to your patent issue: Try talking to these folks. I always figured, from my nice safe cushy position on the sidelines, that the best way to fight a patent was from a small company.

    The concept is:

    (1) Open source the software. License the copyright to a small company. (Which is trivial/cheap to set up.) All lawsuits are now directly against the company, not the employees.

    (2) Explain, and be ever so polite, that you don't believe the evil patent applies to your situation. Explain this, politely, to their lawyers. And particularly, if at all possible, to their Director/CEO/beancounters. Explain that you believe the best thing to do would be to fight this patent in court, thereby overturning the patent, both for your own good and for the good of everyone else.

    (3) Further explain that, while such a court battle would be relatively expensive for both sides, you are confident that folks who have MUCH MORE TO LOSE, and who have currently licensed their patents, or folks with deep pockets who ARE LIABLE TO NEED TO LICENSE THEIR PATENTS, will step forward to make tax deductible donations to help you with your legal fees. (Also contact the EFF. Ask if they will take your case if you can raise the necessary funds (donations) for them to cover these costs.)

    (4) Explain that if you win, everyone wins. Except them, since their patents will no longer be valid, and they may be liable for various legal fees and damages.

    (5) Explain that if you lose, your company will go bankrupt. However, since the software is open source, any other company can pick up the ball and run with it again in some new direction. Tweaked so that it no longer presents exactly the same issue as before.

    (6) Be polite. Always be ever so polite and nice. It may pain you to be nice to these folks, but do so anyway. Your words may, and frequently will, be brought back to haunt you.

    (7) Hire a lawyer. He doesn't have to be the sharpest knife in the drawer. But that little "From the offices of ...." will count for a lot, and may swing their decisions...

    Ultimately, the goal is to make it really, REALLY apparent to these folks that their only winning move is not to play this game. If they win, they win nothing. A company that exists only on paper, and has nothing to back it up. If they lose, they lose big time. All the revenues they were collecting, and all future revenues they could collect.

    Their entire strategy is based on "it's-cheaper-to-buy-us-off-than-to-fight-us". Turnabout is fair play.

    Of course, that's a lot easier to say when one is sitting here, in my nice comfy cushy safe position on the sidelines...

  17. prior art by RonBurk · · Score: 1
    There is plenty of prior art on the general subject of dynamic patching to intercept functions, though I'm not sure that's of any use to you.

    The first patent you listed points to one example, from a magazine I once edited. Dynamically intercepting code was a popular topic around that time. A little poking also turned up Windows/DOS Developer's Journal May 1993 and August 1993, p. 35, where Paul Bonneau offers reusable code for "hooking" Windows functions on the fly.

    Not being a lawyer, I naively assume you would want to try to get the aggressor to point out explicitly what aspect of their patent they feel is infringed by your code before doing anything else. Tom's ("Hi Tom!") assertion that the patent "covers the concept of patching the memory management library in a given process." is at the very least an overstatement, since the first patent itself provides prior art examples that patch the memory management library.

    Finally, I have to wonder if there's any chance that you could use something like Microsoft's Patch-o-Rama to do the dirty work. That places some of the patching work out of your hands, but if the patent holder's main aim is to be anti-competitive rather than to enforce the actual limits of their patent, then it seems like there's not much to stop them from pressing forward with legal action.

    It's a shame that patents are granted for things like this that are clearly techniques and not inventions at all. If this is an invention, then my dog is Edison reincarnate, as she has "invented" all manner of egress from the yard (and should be able to sue other dogs the world 'round).