I have a charactor device driver and a server process. the process communicate 
with the driver.
If i load the driver via command then i unload the driver and disable the 
server( server start with the machine's starting always and must be unloading 
the driver before disabling the server ) ,it's ok. like this:

#add_drv driver
#rem_drv driver
#svcadm disable server

But if i set driver auto-load with the machine's starting.( by setting 
/etc/rc*.d and putting "ddi-forceattach","ddi-no-autodetach" into 
/kernel/drv/driver.conf ), then i unload the driver and disable the server , 
the machine down! like this:

#rem_drv driver
#svcadm disable server

so, what's the exactly different between this two kinds of loading?

i put some crash info by mdb:

>::msgbuf
panic[cpu0]/thread=300018a8360:
BAD TRAP: type=9 rp=2a100541970 addr=7b720bb4 mmu_fsr=0


:
trap type = 0x9
addr=0x7b720bb4
pid=654, pc=0x7b720bb4, sp=0x2a100541211, tstate=0x4400001607, context=0x523
g1-g7: 28, 5, 5, 300000741c0, 6, 0, 300018a8360

000002a100541690 unix:die+9c (9, 2a100541970, 7b720bb4, 0, 2a100541750, 10000)
%l0-3: 0000000000000000 0000000000000009 0000000000000001 000000000000004a
%l4-7: 000003000008cf80 0000000000004020 0000000000000049 000000000106b800
000002a100541770 unix:trap+5dc (2a100541970, 7b720000, 0, 0, 180c000, 
300018a8360)
%l0-3: 0000030002dd1b98 0000000000000009 00000300018e18b8 0000000000000000
%l4-7: 0000000000010008 0000000000010000 000000000000330e 000000000180c180
000002a1005418c0 unix:ktl0+48 (4, 4, 0, 0, 0, 1)
%l0-3: 0000000000000000 0000000000001400 0000004400001607 0000000001013c74
%l4-7: 00000000018a4c00 0000000000000000 0000000000000000 000002a100541970
000002a100541a10 7b720bac (100108850, 0, 0, 0, 0, 0)
%l0-3: 0000000000000000 00000300018e1ae0 000000008a75aa10 0000000000000001
%l4-7: 00000300018e1ae0 0000000000000000 0000000000000000 0000000000000000

syncing file systems...

>$C
000002a100541211 0x7b720bb4(100108850, 0, 0, 0, 0, 0)
000002a1005412f1 syscall_trap+0xac(100108850, 0, 0, 0, 0, 0)

> ::regs
%g0 = 0x0000000000000000 %l0 = 0x0000000000000000
%g1 = 0x0000000000000028 %l1 = 0x00000300018e1ae0
%g2 = 0x0000000000000005 %l2 = 0x000000008a75aa10
%g3 = 0x0000000000000005 %l3 = 0x0000000000000001
%g4 = 0x00000300000741c0 %l4 = 0x00000300018e1ae0
%g5 = 0x0000000000000006 %l5 = 0x0000000000000000
%g6 = 0x0000000000000000 %l6 = 0x0000000000000000
%g7 = 0x00000300018a8360 %l7 = 0x0000000000000000

%o0 = 0x0000000000000004 %i0 = 0x0000000100108850
%o1 = 0x0000000000000004 %i1 = 0x0000000000000000
%o2 = 0x0000000000000000 %i2 = 0x0000000000000000
%o3 = 0x0000000000000000 %i3 = 0x0000000000000000
%o4 = 0x0000000000000000 %i4 = 0x0000000000000000
%o5 = 0x0000000000000001 %i5 = 0x0000000000000000
%o6 = 0x000002a100541211 %i6 = 0x000002a1005412f1
%o7 = 0x000000007b720bac %i7 = 0x00000000010403ac syscall_trap+0xac

%ccr = 0x44 xcc=nZvc icc=nZvc
%fprs = 0x00 fef=0 du=0 dl=0
%asi = 0x00
%y = 0x0000000000000000
%pc = 0x000000007b720bb4
%npc = 0x000000007b720bb8
%sp = 0x000002a100541211 unbiased=0x000002a100541a10
%fp = 0x000002a1005412f1

%tick = 0x0000000000000000
%tba = 0x0000000000000000
%tt = 0x9
%tl = 0x0
%pil = 0x0
%pstate = 0x016 cle=0 tle=0 mm=TSO red=0 pef=1 am=0 priv=1 ie=1 ag=0

%cwp = 0x07 %cansave = 0x00
%canrestore = 0x00 %otherwin = 0x00
%wstate = 0x00 %cleanwin = 0x00

> 300018a8360::findstack
stack pointer for thread 300018a8360: 2a1005409a1
000002a100540a51 makebusy+4()
000002a100540b01 ldl_waito+0x34()
000002a100540bb1 top_end_sync+0xec()
000002a100540c81 ufs_fsync+0x1d0()
000002a100540d51 fifo_fsync+0xcc()
000002a100540e91 fifo_inactive+0x78()
000002a100540f71 trap+0x5dc()
000002a1005410c1 ktl0+0x48()
000002a100541211 0x7b720bac()
000002a1005412f1 syscall_trap+0xac()

over. waiting for ur help~~
 
 
This message posted from opensolaris.org
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to