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!