Article View: net.micro.mac
Article #6429Help: TMON purge bombs DrawString().
From: larryh
Date: Tue, 15 Jul 1986 15:37
Date: Tue, 15 Jul 1986 15:37
64 lines
2623 bytes
2623 bytes
I recently spent an entire weekend tracking down a problem in a program that
was drawing text into an off-screen bitmap. The symptom was that no text
would be drawn if TMON's heap purge was on (app heap). I finally distilled
off all the volatile fractions and was left with the tiny residue of a program
shown below. (Can you tell that I used to be a chemist?) To reproduce the
problem, simply turn on application heap purging at the breakpoint and also
do a "scramble now" command (using the standard user area). The string will
not be drawn and in fact, the system will be so damaged that a reboot
is necessary.
The problem did not occur if the system font was used in place of the
application font (at least with the original, more complex program).
I suspect that the application font is being purged and DrawString is barfing
on a stale pointer but why is the GetFontInfo() necessary and why does
purging have to be done before AND during the DrawString() call?
Does anybody have any idea what is going on here? Did I forget to init
something? Does TMON have a bug? (I doubt it.) Does the mac ROM have a
problem? Help!
Configuration: Mac+, System 3.2, Finder 5.3 (but not in use), Aztec C 1.06G
(I think), TMON (don't remember).
The Program:
#include "quickdraw.h"
#include "window.h"
#include "inits.h"
WindowRecord wRecord;
WindowPtr myWindow;
Rect lRect;
FontInfo info;
main()
{
InitGraf(&thePort);
InitFonts();
InitWindows();
InitCursor();
/* window initialization */
SetRect(&lRect,40,40,300,300);
myWindow = NewWindow(&wRecord, &lRect,"\Ptest",
0x100, 0, -1L, 0, 0L);
SetPort(myWindow);
ClipRect(&myWindow->portRect);
SelectWindow(myWindow);
GetFontInfo(&info); /* this must be here to exibit problem */
#asm
trap #$f /* breakpoint to enter TMON */
#endasm
MoveTo(20,20);
DrawString("\PThis will not be drawn if heap purge is on");
_exit(); /* the mac is done for at this point */
}
Larry Hutchinson, Tektronix, Inc. PO Box 500, MS 02-305, Beaverton, OR 97077
{ decvax,allegra }!tektronix!tekcbi!larryh
Technical Details
Message-ID:
<851@tekcbi.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!utcs!mnetor!seismo!columbia!topaz!ll-xn!mit-amt!mit-eddie!genrad!decvax!tektronix!tekgen!tekcbi!larryhShow Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: arc1-ca.pugleaf.net!utzoo!utcs!mnetor!seismo!columbia!topaz!ll-xn!mit-amt!mit-eddie!genrad!decvax!tektronix!tekgen!tekcbi!larryh From: larryh@tekcbi.UUCP Newsgroups: net.micro.mac Subject: Help: TMON purge bombs DrawString(). Message-ID: <851@tekcbi.UUCP> Date: Tue, 15-Jul-86 11:37:10 EDT Article-I.D.: tekcbi.851 Posted: Tue Jul 15 11:37:10 1986 Date-Received: Wed, 16-Jul-86 20:28:22 EDT Organization: Tektronix, Inc., Beaverton, OR Lines: 64