[comp.sys.amiga.tech] IDCMP and Guru 0100 000C

markv@kuhub.cc.ukans.edu (11/19/90)

First, okay, I blew it on the wildcard issue, as about 20 people were
kind to say by direct mail.  Oh well, thats what I get by using NewS
for a mental break at 3 AM in the middle of a compiler construction
project. :-).

But, now a real question.  I have a mediumish heavily intuitionalized
program.  There are menus, two scrolling list type boxes, and several
gadgets.  Memory usage is about 170K out of 3-4M free.  I dont have
any memory leaks (squashed the last one last night).  I am running the
release 2.02 on an early 3000.

The problem is this.  If I do something to generate IntuiMsgs *very*
quickly (like type very fast, etc) and Process the messages quickly
(ie: Get/Reply) them, when I exit memory is *severly* fragmented (ie:
Largest block <50K. If I do it again, largest block <10K).  If I 
comment out all message handling code, so that I am ONLY Get/CHeck for
CLOSEWINDOW/Reply the problem still occurs.  If I let the messages
queue up w/o processing, then exit, no problem.  If I process slowly,
but type quickly, still problem.

The problem seems independant of which actions I do, only that they
happen quickly.

After exiting if I run AVAIL or any big command, I get a recoverable
Guru 0100000C (AVAIL problem or some such), which turns
non-recoverable inside a program.

Any suggestions?  (I'm not sharing the IDCMP port, I'm not falling
behind in Msgs, etc).  Oh, one side note, all my Amiga allocations are
VIA Alloc/FreeRemember().  I added some tracking code and I am freeing
all Remember Keys, and not freeing any Invalid ones, and I am using
TRUE for the flag.

One other note.  The slower the machine, the more likely the problem
is to occur and the last fast something needs to be (on a 3000 I can
cause it about 1 out of 4 times, on a vanilla 2000 I can cause it 9
out of 10).

Lessee, we've got IDCMP Flags of CLOSEWINDOW, GADGETUP/DOWN, MENUPICK,
ACTIVATE, VANILLAKEY, INTUITICKS, NEWSIZE, REFRESHWINDOW.  The window
is SIMPLE_REFRESH.  There's never any XXXVERIFY msgs, and gadgets are
of all varieties.

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mark Gooderum			Only...		\    Good Cheer !!!
Academic Computing Services	       ///	  \___________________________
University of Kansas		     ///  /|         __    _
Bix:	  markgood	      \\\  ///  /__| |\/| | | _   /_\  makes it
Bitnet:   MARKV@UKANVAX		\/\/  /    | |  | | |__| /   \ possible...
Internet: markv@kuhub.cc.ukans.edu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

peter@cbmvax.commodore.com (Peter Cherna) (11/20/90)

In article <27003.2747b9c2@kuhub.cc.ukans.edu> markv@kuhub.cc.ukans.edu writes:
>But, now a real question.  I have a mediumish heavily intuitionalized
>program.  There are menus, two scrolling list type boxes, and several
>gadgets.  Memory usage is about 170K out of 3-4M free.  I dont have
>any memory leaks (squashed the last one last night).  I am running the
>release 2.02 on an early 3000.
>
>The problem is this.  If I do something to generate IntuiMsgs *very*
>quickly (like type very fast, etc) and Process the messages quickly
>(ie: Get/Reply) them, when I exit memory is *severly* fragmented (ie:
>Any suggestions?  (I'm not sharing the IDCMP port, I'm not falling
>behind in Msgs, etc).  Oh, one side note, all my Amiga allocations are
>VIA Alloc/FreeRemember().  I added some tracking code and I am freeing
>all Remember Keys, and not freeing any Invalid ones, and I am using
>TRUE for the flag.

Be sure you don't access the fields of the IntuiMessage after you've
replied it.  Are you doing any allocations inside of your event loop?

Also, FreeRemember(FALSE) is a very good way to frag the memory of
the system.

Try running with enforcer and memmung both active.

If all else fails, you may mail me your event loop.

>Lessee, we've got IDCMP Flags of CLOSEWINDOW, GADGETUP/DOWN, MENUPICK,
>ACTIVATE, VANILLAKEY, INTUITICKS, NEWSIZE, REFRESHWINDOW.  The window
 ^^^^^^^^

ACTIVATE is not an IDCMP flag, it's a window flag.  Perhaps you want
ACTIVEWINDOW, which is the IDCMP flag to set if you wish to hear
when your window is made active.  This shouldn't be the cause of
your main problem, I think.

>is SIMPLE_REFRESH.  There's never any XXXVERIFY msgs, and gadgets are
>of all varieties.

>Mark Gooderum			Only...		\    Good Cheer !!!

     Peter
--
     Peter Cherna, Software Engineer, Commodore-Amiga, Inc.
     {uunet|rutgers}!cbmvax!peter    peter@cbmvax.commodore.com
My opinions do not necessarily represent the opinions of my employer.
I have found a proof for Fermat's theorem, but there is no room in the .sig!