Subject: Re: i386 MP panic: amap_pp_adjref: negative reference count
To: Sami Kantoluoto <sami.kantoluoto@sjk-software.fi>
From: Andrew Brown <atatat@atatdot.net>
List: current-users
Date: 12/16/2002 12:37:53
>> >db{0}> show map/f e4b41260
>> >MAP 0xe4b41260: [0x0->0xbfbfc000]
>> >        #ent=0, sz=0, ref=1, version=10, flags=0x1
>> >        pmap=0xe399bb40(resident=1)
>> 
>> drat.  okay, from the trace you previously gave, the amap in question
>> is at 0xe4b49dd0.
>
>So, I messed something up?

no, that's fine.  it was to be expected.  the entries have all been
removed from the process's vmspace and are being "deleted".

>> type "x/x 0xe4b49dd0,0t10" and that should print something like:
>> 
>> 0xe4b49dd0:         0         1         0        qq        rr        ss
>> 0xe4b49de8:  mmmmmmmm  nnnnnnnn  oooooooo  pppppppp
>
>Well, not quite:
>
>0xe4b49dd0:     1           c0590b23    c0590b23    11700f8     e49ca4ac
>                c06eb158    0           2           0           10

oh joy.  that looks like it might be off by 24 (or 0x18).  hmm.  :-/

okay...lessee...

amap_pp_adjref(e4b49dd0,1,7,ffffffff,e5198948) at amap_pp_adjref+0x17d
amap_unref(e4b49dd0,1,7,0,e4b41340) at amap_unref+0x99
uvm_unmap_detach(e5198388,0,bfbfc000,e51dcd6c,e4b41340) at uvm_unmap_detach+0x56
uvm_unmap(e4b41260,0,bfbfc000,d2f,e29ccba8) at uvm_unmap+0x146
uvmspace_exec(e4ad0400,0,bfbfc000,e51dce08,0) at uvmspace_exec+0x72

since e4b49dd0 doesn't look like the amap, can you try manually
dumping the vm_map_entry that should be at e5198388 via "x/x
0xe5198388,0t16"?  that should print something that looks like:

0xe5198388:     xxxxxxxx    xxxxxxxx    yyyyyyyy    yyyyyyyy    0           0
0xe51983a0:     0           4           3           7           1           0
0xe51983b8:     zz          xxxxxxxx    0           0

the xxxxxxxx values are pointers and should be between c0000000 and
efffffff, the yyyyyyyy values are the start and end addresses of the
segment, and should be between 0 and bfbfc000, and i expect that the
zz value will be small but non-zero (zero is okay as well).  the third
xxxxxxxx pointer should be the pointer to the amap.

-- 
|-----< "CODE WARRIOR" >-----|
codewarrior@daemon.org             * "ah!  i see you have the internet
twofsonet@graffiti.com (Andrew Brown)                that goes *ping*!"
werdna@squooshy.com       * "information is power -- share the wealth."