# DB crasher

Don Schwarz (darkowl@darkowl.pr.mcs.net)
Tue, 23 Apr 1996 13:46:50 PDT

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    On Tue, 23 Apr 1996, Judy Anderson wrote:

    > Another solution to the queued task problem is to only limit those who
    > are causing a problem.  On LambdaMOO prior to 1.7.9, we had a task
    > similar to the clock, except that it didn't kill tasks.  It notified
    > all connected wizards whenever any person had more than 100 tasks.
    > This permitted us to take action before a forkbomb had many iterations
    > to build up tasks.  (Again taking advantage of LambdaMOO lag---the
    >
    Just keep in mind that, unless you've hacked your $no_one:eval to do
    something special, programmers can usually also forkbomb with $no_one's
    perms.  So if you're going to only set a task limit on people who have
    forkbombed before, remember to also set a limit on $no_one.  Also, if you
    know that your MOO normally has 20 tasks running, and your system crashes at
    500 (just made that number up, I'm not sure of the average #), don't set
    everyone's task quota to 450 and assume that'll save it, because most people
    can create another 450 with $no_one's perms.

    And yes, it is usually possible to create a forked task owned by $no_one
    even if your $no_one:eval checks for suspend() and fork()s.  Unless you've
    also disabled add_verb(), people can @chmod an object writable and create a
    verb owned by $no_one that can suspend or fork.  Not to mention things like:
      ;$no_one:eval(";return call_function(player.foo, 0);");
    When player.foo is set to "suspend".
                                                             --Dark_Owl