worley@compass.com (Dale Worley) (01/03/91)
I am not certain, but I suspect that this problem (the debugger reports "Out of Memory" while trying to allocate gigabytes of memory) is due to dodb() constructing only one argument for the O_SUBR that calls DB, whereas do_subr() requires two (one for the subroutine name, one for the argument list). Evidence: -D1024 shows that "&db" written by the user is compiled with two arguments, whereas the implicit "&db" inserted by "-d" has only one. The code in do_subr() seems to expect two arguments, for example: register int items = arglast[2] - sp; /* sp = arglast[1] here */ int hasargs = ((arg[2].arg_type & A_MASK) != A_NULL); There seems to be no conditionalization in do_subr() that would allow it to avoid executing these statements when the implicit "&db" is called. Dale Dale Worley Compass, Inc. worley@compass.com -- This is your brain on drugs with a side order of bacon and our world-famous bottomless cup of coffee all for $2.99.
worley@compass.com (Dale Worley) (01/04/91)
Larry sent me this patch. It fixes the "Out of Memory in debugger" problem. From: lwall@devvax.Jpl.Nasa.Gov (Larry Wall) Date: Thu, 3 Jan 91 10:19:24 -0800 Newsgroups: comp.lang.perl That may well be it. In dodb(), try changing cmd->c_expr = make_op(O_SUBR, 1, to cmd->c_expr = make_op(O_SUBR, 2, and see if it fixes it. Dale Worley Compass, Inc. worley@compass.com -- Klein bottle for sale ... inquire within.
usenet@carssdf.UUCP (John Watson) (01/05/91)
In article <1991Jan3.214039.26552@uvaarpa.Virginia.EDU>, worley@compass.com (Dale Worley) writes: > Larry sent me this patch. It fixes the "Out of Memory in debugger" problem. > That may well be it. In dodb(), try changing > cmd->c_expr = make_op(O_SUBR, 1, > to > cmd->c_expr = make_op(O_SUBR, 2, Thankyou very much. I have been looking for this for 2 months. I think perl is finally fixed! John Watson ...!rutgers!carssdf!usenet