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
