On 22 May 97, Michael Welsh Duggan wrote about Re: New menu code crashes!: > nico.francois@scala.nl (Nico Francois) writes: > > > I bring not so good news. With all your latest menu patches applied it > > appears Gnus will no longer load. Emacs will suddenly start consuming a > > massive amount of memory until the whole system becomes unusable. > > I don't use Gnus myself, so I was only alerted to this problem by one of > > my colleagues. > > Yes, this is definitely a BAD THING (tm). I have been able to > reproduce it at this end. At this point in time, I am guessing that I > am failing to GCPRO something important. This is because the code > fails consistantly normally, but doesn't fail at all when I am > single-stepping through it. > > I _did_ forget to GCPRO the descrip variable, but fixing that didn't > seem to solve the problem. I am afraid I will not be able to do any > more debugging on this until Tuesday, however, as I will be out of > town until then. Well, I think it's fixed now. I assumed your guess was correct and closely examined the GCPROs used in w32menu.c. I must admit I haven't got a clue what GCPRO *exactly* does, but I sort of assumed that if it was to be used to protect a lisp object that it would only work on objects that were already initialized. So I "fixed" the code to protect 'descrip' in all appropriate places, and protect it _after_ it was initialized. So either fixing the missing 'descrip' protection (in 4 places) or the fact that it was protected before being set (in 2 places), or both, fixes the problem. I'm attaching a diff (diff-ed to your latest sources) for you to examine. It definately works fine with Gnus now. I'm happy again :-) _o Nico Francois #> Sr. Software Engineer 4 Scala Computer Television -------------- Enclosure number 1 ---------------- * This message contains the file 'emacs-nico.diff', which has been * uuencoded. If you are using Pegasus Mail, then you can use * the browser's eXtract function to lift the original contents * out to a file, otherwise you will have to extract the message * and uudecode it manually. begin 660 emacs-nico.diff M*BHJ($-H86YG94QO9RYO2!N M86UE(&]R(&$@;F%M92!C;VYS=&EN9PT**R`);VYL>2!O9B!D87-H97,@*"0T**R`);F%M97,@=VET:"!E>&%C=&QY('1W;R!D87-H97,@*"(M+2(I('=H M97)E(&-O;G-I9&5R960@2`Q,B`Q-CHU-SHS,B`Q.3DW M("!.:6-O($9R86YC;VES("`\;FEC;RYF2`Q,B`Q M-CHQ,CHQ-"`Q.3DW#0HM+2T@=S,R;65N=2YC($9R:2!-87D@,C,@,3,Z,C8Z M-#(@,3DY-PT**BHJ*BHJ*BHJ*BHJ*BHJ#0HJ*BH@,3(U+#$S,"`J*BHJ#0HM M+2T@,3(U+#$T.2`M+2TM#0H@("`@;'!M;2T^;65N=5]I=&5MPT**R`@(&EN="!IPT*+2TM M(#$W,2PQ-S<@+2TM+0T*("`@(%5)3E0@9G5&;&%G2`H:71E;5]S=')I;F6UA<"P@<&5N M9&EN9U]M87!S+"!D968L('!R969I>"D[#0H@(`D)("`-"B`@"0D@(&1E9B`] M(&UE;G5?:71E;5]E<75I=E]K97D@*&ET96U?PT*(2`)"2`@("!S=')U8W0@9V-PPT*("`)"2`@("`@($QIPT*("`)"2`@("`@($QIPT*("`)"0D@($QI6UA<"P@<&5N9&EN9U]M87!S+"!D97-CPT*(2`)("`@("`@;&ES=%]O9E]I=&5MPT*(2`)("`@("`@;F5W7VAM96YU(#T@;&ES=%]O9E]I=&5MPT*("`@($QIPT*+2TM(#PT*("`@($QIPT*("`@($QIPT* M("`@($QIPT*("`)"2`@("`@($QI6UA<"P@<&5N9&EN9U]M87!S+"!I=&5M+"!I=&5M7W-T6UA M<%\Q("AD968L(#`L(#$I.PT*("`)"2`@("`@(`T**BHJ*BHJ*BHJ*BHJ*BHJ M#0HJ*BH@.3(R+#DR."`J*BHJ#0H@(`D)"2!A6UA<"P@<&5N9&EN9U]M87!S+"!D968L(&1E M