Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!samsung!gem.mps.ohio-state.edu!apple!apple.com!chewy From: chewy@apple.com (Paul Snively) Newsgroups: comp.sys.mac.programmer Subject: Re: Tail patches Message-ID: <5212@internal.Apple.COM> Date: 16 Nov 89 00:11:49 GMT Sender: usenet@Apple.COM Organization: Apple Computer, Inc. Lines: 69 References:<1459@sequent.cs.qmc.ac.uk> <36250@apple.Apple.COM> <5056@internal.Apple.COM> <1989Nov7.212837.5146@oracle.com> <26596@santra.UUCP> <5148@internal.Apple.COM> <26693@santra.UUCP> In article <26693@santra.UUCP> jmunkki@kampi.hut.fi (Juri Munkki) writes: > Paul Snively continues: > >In particular, I can think of some really evil compatibility problems that > >your suggested fix could provoke; that's one reason that we aren't likely > >to use it in the future. > > Please tell us what the problems are so that we can work them out. The most obvious that come to my mind are: some software, such as debuggers, look directly at the trap dispatching tables because they have to. Other software does either for (silly) performance reasons, or to avoid being lied to by _GetTrapAddress. The problem here is that if _GetTrapAddress lies to you (as it DOES under certain conditions with certain vendors' hardware/software) then you have no other recourse. And there's no way to "work them out" without completely throwing out the current trap<->address schtick and starting over. Fat chance. In article <26693@santra.UUCP> jmunkki@kampi.hut.fi (Juri Munkki) writes: > I find it very interesting that you find that you can just say "it can't be done" > without explaining yourself. Just because you work at Apple doesn't mean > that you are right just because you say so. Just because I say I'm right > doesn't mean I'm right, but you have to prove me wrong first! Spare me, please. I had only hoped to save some time/bandwidth by not rehashing something that Macintosh Developer Technical Support (and others) have said time and time again: don't tail patch; you'll break things in ways that are far too subtle and bizarre to fully explain. The fact that I work at Apple may not confer 100% accuracy, but it IS my job to say things like "don't do that because it won't work," and it IS in your best interests to listen to me and the others who are in this (unfortunate) position, because far more often than not, we know what we are talking about. Incidentally, when you say something is true, I am certainly under no obligation to prove you wrong; the burden of proof lies on the person making the statement, if indeed anything is to be proven (as opposed to being accepted as a statement of personal opinion). In article <26693@santra.UUCP> jmunkki@kampi.hut.fi (Juri Munkki) writes: > The discussion on tail patching and come-from patching has always been > theoretical. I've never really believed that Apple would ever fix anything > that they have decided to break... So, let's say that everything I write > is just theoretical. That way no one will get offended, right? Perhaps no one will become offended, but will the writing then have any semantic value whatsoever? I fully expect to offend some people, but if the other side-effect is to have more robust Macintosh software that follows more of the rules, then that's a price I'll pay in spades. And I'd be interested in any examples of "something that we have decided to break," let alone something that we have decided to break and then not fix. The discussion about tail-patching and come-from code is most certainly NOT theoretical; many people tail-patching have said that they are doing this, and many of us here at Apple have said that we're not saying "this is a bad idea in theory." It is the WRONG thing to do and it DOES break software, period, no ifs, ands, or buts, read my lips, for the last time: TAIL-PATCHING BREAKS MACINTOSH SOFTWARE, SO DON'T DO IT. __________________________________________________________________________ Just because I work for Apple Computer, Inc. doesn't mean that they believe what I believe or vice-versa. __________________________________________________________________________ C++ -- The language in which only friends can access your private members. __________________________________________________________________________