assertion: new_mem_lo > 0

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Wed, 19 Aug 2009 16:15:18 +1200

Henrik, this is the new memory-promotion patch dying.

I can reproduce this reliably with squidclient ftp://ftp.netbsd.org

The trigger appears to be the presence of:
   acl FTP proto FTP
   cache deny FTP

Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb7ab16d0 (LWP 23380)]
0xb7f7c430 in __kernel_vsyscall ()
<snip>
#3 0x08092dac in xassert (msg=0x81e5f58 "new_mem_lo > 0",
file=0x81e5ef8 "../../trunk/src/MemObject.cc", line=361)
     at ../../trunk/src/debug.cc:557
#4 0x08106bc3 in MemObject::trimUnSwappable (this=0x8bc4ee8) at
../../trunk/src/MemObject.cc:361
#5 0x0813493a in StoreEntry::trimMemory (this=0xb79c45f0) at
../../trunk/src/store.cc:1853
#6 0x081446df in StoreEntry::swapOut (this=0xb79c45f0) at
../../trunk/src/store_swapout.cc:224
#7 0x0813a5fa in StoreEntry::invokeHandlers (this=0xb79c45f0) at
../../trunk/src/store_client.cc:732
#8 0x08132b29 in StoreEntry::flush (this=0xb79c45f0) at
../../trunk/src/store.cc:1647
#9 0x0810fcdf in packerClean (p=0xbfe9a248) at
../../trunk/src/Packer.cc:154
#10 0x081327bc in StoreEntry::replaceHttpReply (this=0xb79c45f0,
rep=0x8bc9254) at ../../trunk/src/store.cc:1794
#11 0x081473f7 in ServerStateData::setFinalReply (this=0xb783d008,
rep=0x8bc9254) at ../../trunk/src/Server.cc:158
#12 0x08147436 in ServerStateData::adaptOrFinalizeReply
(this=0xb783d008) at ../../trunk/src/Server.cc:809
#13 0x080bc98b in FtpStateData::appendSuccessHeader (this=0xb783d008) at
../../trunk/src/ftp.cc:3846
#14 0x080ca5ea in FtpStateData::processReplyBody (this=0xb783d008) at
../../trunk/src/ftp.cc:1414
#15 0x080c6baf in FtpStateData::dataRead (this=0xb783d008,
io=@0x8c48d48) at ../../trunk/src/ftp.cc:1400
<snip>

gdb) f 4
#4 0x08106bc3 in MemObject::trimUnSwappable (this=0x8b7bee8) at
../../trunk/src/MemObject.cc:361
361 assert (new_mem_lo > 0);
(gdb) p *this
$1 = {method = {static RequestMethodStr = 0x8243000, theMethod =
METHOD_GET, theImage = {static npos = 4294967295, size_ = 0, len_ = 0,
       buf_ = 0x0}}, url = 0x8bdb008 "ftp://ftp.netbsd.org/", data_hdr =
{inmem_hi = 134, nodes = {head = 0x8bf38c0, elements = 1}},
   inmem_lo = 0, clients = {head = 0x8bdf238, tail = 0x8bdf238},
nclients = 1, swapout = {queue_offset = 0, memnode = 0x0, sio = {p_ =
0x0}},
   request = 0x8b8f4a8, start_ping = {tv_sec = 0, tv_usec = 0},
ping_reply_callback = 0, ircb_data = 0x0, abort = {
     callback = 0x80b54a6 <FwdState::abort(void*)>, data = 0x8be32e8},
log_url = 0x8bdb028 "ftp://ftp.netbsd.org/", repl = {data = 0x0},
   id = 27, object_sz = -1, swap_hdr_sz = 0, vary_headers = 0x0, _reply
= 0x8b80254, deferredReads = {deferredReads = {head = 0x0}}}

(gdb) f 5
#5 0x0813493a in StoreEntry::trimMemory (this=0xb7aeb5f0) at
../../trunk/src/store.cc:1853
1853 mem_obj->trimUnSwappable ();
(gdb) p *this
$2 = {<_hash_link> = {key = 0xb7aaa1b8, next = 0x0}, _vptr.StoreEntry =
0x81ee808, mem_obj = 0x8b7bee8, repl = {data = 0x0}, timestamp = -1,
   lastref = 1250654742, expires = -1, lastmod = -1, swap_file_sz = 0,
refcount = 1, flags = 1224, swap_filen = -1, swap_dirn = -1,
   lock_count = 3, mem_status = NOT_IN_MEMORY, ping_status = PING_DONE,
store_status = STORE_PENDING, swap_status = SWAPOUT_NONE,
   static pool = 0x8b7afb8}

(gdb) f 10
#10 0x081327bc in StoreEntry::replaceHttpReply (this=0xb7aeb5f0,
rep=0x8b80254) at ../../trunk/src/store.cc:1794
1794 packerClean(&p);
(gdb) p *this
$5 = {<_hash_link> = {key = 0xb7aaa1b8, next = 0x0}, _vptr.StoreEntry =
0x81ee808, mem_obj = 0x8b7bee8, repl = {data = 0x0}, timestamp = -1,
   lastref = 1250654742, expires = -1, lastmod = -1, swap_file_sz = 0,
refcount = 1, flags = 1224, swap_filen = -1, swap_dirn = -1,
   lock_count = 3, mem_status = NOT_IN_MEMORY, ping_status = PING_DONE,
store_status = STORE_PENDING, swap_status = SWAPOUT_NONE,
   static pool = 0x8b7afb8}
(gdb) p *rep
$7 = {<HttpMsg> = {_vptr.HttpMsg = 0x81e2d88, http_ver = {major = 0,
minor = 0}, header = {entries = {capacity = 16, count = 4,
         items = 0x8bffd00}, mask =
"\000\000\024\000\004@\000\000\000\000\000", owner = hoReply, len =
107}, cache_control = 0x0,
     hdr_sz = 134, content_length = -1, protocol = PROTO_NONE, pstate =
psReadyToParseStartLine, body_pipe = {p_ = 0x0}, lock_count = 3},
   date = 1250654744, last_modified = -1, expires = -1, content_type =
{static npos = 4294967295, size_ = 36, len_ = 9,
     buf_ = 0x8ba97f8 "text/html"}, surrogate_control = 0x0,
content_range = 0x0, keep_alive = 0, sline = {version = {major = 1,
minor = 0},
     reason = 0x81daeee "Gatewaying", status = HTTP_OK}, body = {mb =
0x8b83540}, protoPrefix = {static npos = 4294967295, size_ = 36,
     len_ = 5, buf_ = 0x8ba96b4 "HTTP/"}, do_clean = true, bodySizeMax = -2}

gdb) f 15
#15 0x080c6baf in FtpStateData::dataRead (this=0xb7964008,
io=@0x8c00560) at ../../trunk/src/ftp.cc:1400
warning: Source file is more recent than executable.
1400 processReplyBody();
(gdb) p *this
$8 = {<ServerStateData> = {<BodyConsumer> = {<AsyncJob> =
{_vptr.AsyncJob = 0x81dc8cc, stopReason = 0x0, typeName = 0x81dbbb8
"FtpStateData",
         inCall = {p_ = 0x8c00538}, id = 2, static TheLastId = 2},
_vptr.BodyConsumer = 0x81dc84c}, completed = false, currentOffset = 0,
     responseBodyBuffer = 0x0, entry = 0xb7aeb5f0, fwd = {p_ =
0x8be32e8}, request = 0x8b8f4a8, requestBodySource = {p_ = 0x0},
     requestSender = {p_ = 0x0}, theVirginReply = 0x8b80254,
theFinalReply = 0x8b80254}, user = "anonymous", '\0' <repeats 8182 times>,
   password = "Squid@", '\0' <repeats 8185 times>, password_url = 0,
reply_hdr = 0x0, reply_hdr_state = 0, clean_url = {
     static npos = 4294967295, size_ = 0, len_ = 0, buf_ = 0x0},
title_url = {static npos = 4294967295, size_ = 36, len_ = 21,
     buf_ = 0x8ba9648 "ftp://ftp.netbsd.org/"}, base_href = {static npos
= 4294967295, size_ = 36, len_ = 22,
     buf_ = 0x8ba966c "ftp://ftp.netbsd.org//"}, conn_att = 0, login_att
= 0, state = READING_DATA, mdtm = -1, theSize = -1, pathcomps = 0x0,
   filepath = 0x0, dirpath = 0x0, restart_offset = 0, proxy_host = 0x0,
list_width = 0, cwd_message = 0x8941168, old_request = 0x0,
   old_reply = 0x0, old_filepath = 0x0, typecode = 0 '\0', ctrl =
{<FtpChannel> = {fd = 15, closer = {p_ = 0x8bffc60}},
     buf = 0xb7a68008 "150 Opening ASCII mode data connection for
'/bin/ls'.\r\nood City, CA, USA\r\n 1 Gbps connectivity courtesy of",
' ' <repeats 26 times>, ", ,\r\n Internet Systems Consortium",
' ' <repeats 17 times>, "WELCO"..., size = 4096, offset = 0,
     message = 0x0, last_command = 0x8c00418 "LIST\r\n", last_reply =
0x8c00500 "Opening ASCII mode data connection for '/bin/ls'.",
     replycode = 150}, data = {<FtpChannel> = {fd = 16, closer = {p_ =
0x8c00428}}, readBuf = 0x8b8352c, host = 0x8bf39f8 "204.152.190.13",
     port = 56884, read_pending = false}, flags = {pasv_supported =
true, epsv_all_sent = false, pasv_only = false, authenticated = false,
     tried_auth_anonymous = true, tried_auth_nopass = false, isdir =
true, skip_whitespace = false, rest_supported = true,
     http_header_sent = true, tried_nlst = false, need_base_href =
false, dir_slash = false, root_dir = true, no_dotdot = false,
     html_header_sent = false, binary = false, try_slash_hack = false,
put = false, put_mkdir = false, listformat_unknown = false,
     listing_started = false, completed_forwarding = false}, static
CBDATA_FtpStateData = 27}
(gdb) p io
$9 = (const CommIoCbParams &) @0x8c00560: {<CommCommonCbParams> = {data
= 0xb7964008, fd = 16, xerrno = 0, flag = COMM_OK},
   buf = 0xb7a69008 "total 59486\r\nlrwxr-xr-x 1 root wheel", ' '
<repeats 11 times>, "32 Dec 10 2004 .message ->
pub/NetBSD/README.export-control\r\ndrwx------ 2 2 wheel
    512 Nov 1 2008 .snapshot\r\ndrwxr-x--- 4 root"..., size = 571}

Amos

-- 
Please be using
   Current Stable Squid 2.7.STABLE6 or 3.0.STABLE18
   Current Beta Squid 3.1.0.13
Received on Wed Aug 19 2009 - 04:15:28 MDT

This archive was generated by hypermail 2.2.0 : Wed Aug 19 2009 - 12:00:06 MDT