[Prev][Next][Index][Thread]

# Re: 1.8p2 weirdness...

- Date: Thu, 21 Mar 1996 12:56:57 PST
- From:
- Cc: moo-cows@parc.xerox.com
- In-reply-to: Andrew Wilson's message of "Thu, 21 Mar 1996 08:36:13 PST" <199603211636.QAA01011@aaaaaaaa.demon.co.uk>

    Andrew Wilson writes:
    >     http://www.cm.cf.ac.uk/User/Andrew.Wilson/JHCore.db-20Apr1995.db.new
    > is a JHCore that grew from 4Mb to 12Mb process size (2Mb to 3Mb
    > compressed), in the space of about 2 minutes, on its own.

    Here's what I was able to track down.  I ran this DB under 1.8.0p2 with the
    force_input() patch applied.  It pegged my CPU and, indeed, kept on growing and
    growing.  After a while, I attached a debugger to it and found that it was in
    the following task:

    Mar 21 13:41:33: #51:suspend_if_needed, line 10:  foo
    Mar 21 13:41:33: ... called from #30:to_jtext (this == #55), line 39
    Mar 21 13:41:33: ... called from #30:get_topic (this == #55), line 12
    Mar 21 13:41:33: ... called from #30:forward pass unpass (this == #55), line 9
    Mar 21 13:41:33: ... called from #30:get_topic (this == #55), line 9
    Mar 21 13:41:33: ... called from #210:send_to, line 10
    Mar 21 13:41:33: ... called from #128:send_me, line 5
    Mar 21 13:41:33: ... called from #6:receive_document (this == #221), line 19
    Mar 21 13:41:33: ... called from #6:help ?* (this == #221), line 51
    Mar 21 13:41:33: (End of traceback)

    Here's the code it was running for #30:to_jtext (which, of course, might not be
    the current text of that verb, since this is a long-running BG task):
    -------------------------------------------------------------------------------
    "to_jtext(text, topic)";
    "Convert help text to jtext.";
    "Doesn't handle lots and lots of things.";
    "If it can't figure out how to be smart, it resorts to a plaintext tag.";
    "Doesn't make a vgroup, just returns a list of vboxes with no title or header.";
    flat = text = args[1];
    topic = args[2];
    if (typeof(flat) == STR)
      return {{$jtext.paragraph, flat}};
    elseif (typeof(flat) != LIST || (flat && typeof(flat[1]) == LIST))
      return flat;
    endif
    new = {};
    while (flat)
      if (length(flat) == 1 || flat[2] == "")
        if (match(line = flat[1], "^---------------------*$"))
          new = {@new, {$jtext.hr}};
        elseif (match(line, "^ *%(Usage%|Syntax%): "))
          new = {@new, {$jtext.plaintext, line}};
        else
          player:tell("line = '", line, "'");
          new = {@new, {$jtext.paragraph, @this:line_to_hboxes(line)}};
        endif
        flat[1..2] = {};
      else
        if (blank = "" in flat)
          section = flat[1..blank - 1];
          if (0)
            flat = flat[blank + 1..length(flat)];
          else
            flat = flat[blank..length(flat)];
          endif
        else
          section = flat;
          flat = {};
        endif
        new = {@new, this:plaintext_or_dlist(section, topic)};
      endif
      $command_utils:suspend_if_needed(0);
    endwhile
    return new;
    -------------------------------------------------------------------------------

    At the time I stopped it, the value of `flat' was this:

    	{"", "", "characters -- setting characteristics of yourself",
    	 "movement -- moving yourself between rooms",
    	 "communication -- communicating with other players",
    	 "manipulation -- moving or using other objects",
    	 "miscellaneous -- commands that don't fit anywhere else", "",
    	 "building -- extending the MOO",
    	 "programming -- writing code in the MOO programming language",
    	 "editors -- editing text and code in the MOO", "",
    	 "@options -- customizing your MOO environment",
    	 "@pagelength -- what to do if lines scroll off your screen too fast",
    	 "@linelength -- what to do if lines are truncated"}

    If you trace through this code, you'll see that, when `flat[1]' is "", this
    loop makes no progress in reducing the length of `flat', while it grows `new'
    every time around.  At the time I stopped the task, `new' was 99,835 elements
    and growing.

    This sufficiently explains the observed behavior that I won't be looking any
    further into this.

    	Pavel

Follow-Ups:

- Re: 1.8p2 weirdness...

- From: Jay Carlson <nop@nop.com>

- Re: 1.8p2 weirdness...

- From: asb@media.mit.edu

References:

- 1.8p2 weirdness...

- From: Andrew Wilson <andrew@aaaaaaaa.demon.co.uk>

- Prev: 1.8p2 weirdness...
- Next: Re: 1.8p2 weirdness...
- Index: MOO-cows
- Thread: MOO-cows

Home | Subject Index | Thread Index