How to check the cause of exception in miniport driver development?

Dear Developers,
Greetings!!

While developing the miniport driver I got an exception.
Right now, I am in MPInitialize stage… But, my all structures are registered properly with NDIS framework and I have not got any error in my code. Below are the detail logs : -

8056 PID:400002 TID:9e0006 OSAXST1: >>> Loading Module ‘phywl18xx.dll’ (0x9E432D44) at address 0xEDE90000-0xEDE97000 in Process ‘NK.EXE’ (0x87D7FAD0)
PB Debugger Loaded symbols for ‘C:\WINCE700\OSDESIGN\PHYTEC_OPENBOARD\PHYTEC_OPENBOARD\RELDIR\PHYTEC_AM335X_BSP_ARMV7_DEBUG\PHYWL18XX.DLL’
8059 PID:400002 TID:9e0006 +NDIS DriverEntry: dwReason address: 0x1, value: -1639764668
8059 PID:400002 TID:9e0006 Warning! Kernel DLL ‘phywl18xx.dll’ is registered for thread creation/deletion notification. To improve performance if you dont need thread notifications call DisableThreadLibraryCalls from inside
8060 PID:400002 TID:9e0006 +NDIS Driver Entry Point…
8061 PID:400002 TID:9e0006 +NDIS DriverEntry: Driver Object & RegistryPath is (0xA2474290, 0xA24742A0)
8063 PID:400002 TID:9e0006 +phytec_miniport_characteristics.
8064 PID:400002 TID:9e0006 The major version is 6
8065 PID:400002 TID:9e0006 The minor version is 0
8068 PID:400002 TID:9e0006 +NDIS DriverEntry: Driver Object & RegistryPath is (0xA2474290, 0xA24742A0)
8068 PID:400002 TID:9e0006 ==>NdisMRegisterMiniportDriver: DriverObject A2474290
8069 PID:400002 TID:9e0006 <==NdisMRegisterMiniportDriver: MiniBlock A80657C0
8070 PID:400002 TID:9e0006 STATUS: Success
8070 PID:400002 TID:9e0006 -phytec_miniport_characteristics.
8071 PID:400002 TID:9e0006 -NDIS Driver Exit Point…
8073 PID:400002 TID:9e0006 ==>ndisReadOffloadRegistry: Miniport A8065A70
8074 PID:400002 TID:9e0006 <==ndisReadOffloadRegistry: Miniport A8065A70, Status c0000001, Registry 20000
8076 PID:400002 TID:9e0006 ++phytec_initialize.
8076 PID:400002 TID:9e0006 ++phytec_object_configuration…
8077 PID:400002 TID:9e0006 --phytec_object_configuration…

8078 PID:400002 TID:9e0006 ++phytec_allocate_adapter…
8079 PID:400002 TID:9e0006 Unknown: DEBUGCHK failed in file d:\bt\2034\private\winceos\net\ndis\sys\ndisbuf.c at line 785
8085 PID:400002 TID:9e0006 ## LOOKASIDE INITIALIZE ## [216] bytes, depth [1024]
8085 PID:400002 TID:9e0006 --phytec_allocate_adapter…

8086 PID:400002 TID:9e0006 ++phytec_register_attributes…
8087 PID:400002 TID:9e0006 ==>NdisMSetMiniportAttributes : Miniport A8065A70, AttributeType 9e
8089 PID:400002 TID:9e0006 ==>NdisMSetAttributesEx: Miniport A8065A70
8090 PID:400002 TID:9e0006 ==>ndisSetMiniportHandlers: Miniport A8065A70
8091 PID:400002 TID:9e0006 ==>ndisSetupLwfMiniportHandlers : Miniport A8065A70
8092 PID:400002 TID:9e0006 ==>ndisSetupNoFilterHandlers : Miniport A8065A70
8093 PID:400002 TID:9e0006 <==ndisSetupNoFilterHandlers : Miniport A8065A70
8094 PID:400002 TID:9e0006 <==ndisSetupLwfMiniportHandlers: Miniport A8065A70
8094 PID:400002 TID:9e0006 <==ndisSetMiniportHandlers: Miniport A8065A70
8095 PID:400002 TID:9e0006 ==>ndisSetMiniportHandlers: Miniport A8065A70
8096 PID:400002 TID:9e0006 ==>ndisSetupLwfMiniportHandlers : Miniport A8065A70
8097 PID:400002 TID:9e0006 ==>ndisSetupNoFilterHandlers : Miniport A8065A70
8098 PID:400002 TID:9e0006 <==ndisSetupNoFilterHandlers : Miniport A8065A70
8098 PID:400002 TID:9e0006 <==ndisSetupLwfMiniportHandlers: Miniport A8065A70
8099 PID:400002 TID:9e0006 <==ndisSetMiniportHandlers: Miniport A8065A70
8100 PID:400002 TID:9e0006 <==NdisMSetAttributesEx: Miniport A8065A70
8101 PID:400002 TID:9e0006 <==NdisMSetMiniportAttributes : Miniport A8065A70, AttributeType 9e, Status 0
8102 PID:400002 TID:9e0006 --phytec_register_attributes…
8102 PID:400002 TID:9e0006 ++phy_adapter_native802_11_attributes: Start…
8103 PID:400002 TID:9e0006 ++Allocate80211Attributes…
8104 PID:400002 TID:9e0006 Number of supported phys 1
8105 PID:400002 TID:9e0006 --Allocate80211Attributes…
8106 PID:400002 TID:9e0006 ==>NdisMSetMiniportAttributes : Miniport A8065A70, AttributeType a1
8106 PID:400002 TID:9e0006 ==>ndisMSetNative802_11Attributes : Miniport A8065A70
8107 PID:400002 TID:9e0006 Unknown: DEBUGCHK failed in file d:\bt\2034\private\winceos\net\ndis\sys\miniport.c at line 8957
8110 PID:400002 TID:9e0006 <==NdisMSetMiniportAttributes : Miniport A8065A70, AttributeType a1, Status 0
8115 PID:400002 TID:9e0006 --phy_adapter_native802_11_attributes: Start…
8115 PID:400002 TID:9e0006 ++phytec_general_attributes…
8116 PID:400002 TID:9e0006 ==>NdisMSetMiniportAttributes : Miniport A8065A70, AttributeType 9f
8116 PID:400002 TID:9e0006 ==>ndisMSetGeneralAttributes : Miniport A8065A70
8117 PID:400002 TID:9e0006 <==ndisMSetGeneralAttributes : Miniport A8065A70, Status 0
8118 PID:400002 TID:9e0006 <==NdisMSetMiniportAttributes : Miniport A8065A70, AttributeType 9f, Status 0
8119 PID:400002 TID:9e0006 --phytec_general_attributes…

8125 PID:400002 TID:9e0006 --phytec_initialize.
8125 PID:400002 TID:9e0006 ==>NdisMRegisterAdapterShutdownHandler: Miniport A8065A70
8126 PID:400002 TID:9e0006 <==NdisMRegisterAdapterShutdownHandler: Miniport A8065A70
8129 PID:400002 TID:9e0006 ==>ndisQueueMiniportOnDriver: Miniport A8065A70, MiniBlock A80657C0
8129 PID:400002 TID:9e0006 <==ndisQueueMiniportOnDriver: Miniport A8065A70, MiniBlock A80657C0, rc 1
8130 PID:400002 TID:9e0006 ==>ndisRestartMiniport: Miniport A8065A70
8131 PID:400002 TID:9e0006 ==>NdisMRestartComplete: Miniport A8065A70
8132 PID:400002 TID:9e0006 <==NdisMRestartComplete: Miniport A8065A70
8133 PID:400002 TID:9e0006 <==ndisRestartMiniport: Miniport A8065A70, Status 0
8134 PID:400002 TID:9e0006 ==>ndisCheckMiniportFilters: Miniport A8065A70
8134 PID:400002 TID:9e0006 ==>ndisCreateFilterAdapterRegistry, FilterServiceName A8065128 Miniport A8065A70
8135 PID:400002 TID:9e0006 <==ndisAllocateConfigurationString: ServiceName A8065128, AdapterInstanceName A806646C
8136 PID:400002 TID:9e0006 <==ndisCreateFilterAdapterRegistry, FilterServiceName A8065128 Miniport A8065A70 Status 0
8137 PID:400002 TID:9e0006 ==>ndisPauseFilterStack: Filter 00000000
8137 PID:400002 TID:9e0006 <==ndisPauseFilterStack: Filter 00000000
8138 PID:400002 TID:9e0006 ==>ndisPauseMiniport: Miniport A8065A70
8139 PID:400002 TID:9e0006 ==>NdisMPauseComplete: Miniport A8065A70
8140 PID:400002 TID:9e0006 <==NdisMPauseComplete: Miniport A8065A70
8141 PID:400002 TID:9e0006 <==ndisPauseMiniport: Miniport A8065A70
8142 PID:400002 TID:9e0006 ==>ndisQueueFilterOnDriver: Filter A8068330, FilterDriver A80650C0
8142 PID:400002 TID:9e0006 <==ndisQueueFilterOnDriver: Filter A8068330, FilterDriver A80650C0, rc 1
8143 PID:400002 TID:9e0006 <==ndisAllocateConfigurationString: ServiceName A8065128, AdapterInstanceName A806646C
8144 PID:400002 TID:9e0006 Unknown: DEBUGCHK failed in file d:\bt\2034\private\winceos\net\wlan\sys\infra\driver\lwf.c at line 1309
8148 PID:400002 TID:9e0006 ==>NdisFSetAttributes: Filter A8068330
8149 PID:400002 TID:9e0006 ==>ndisSetupLwfMiniportHandlers : Miniport A8065A70
8150 PID:400002 TID:9e0006 ==>ndisSetupDownwardHandlers : Miniport A8065A70
8151 PID:400002 TID:9e0006 <==ndisSetupDownwardHandlers : Miniport A8065A70
8152 PID:400002 TID:9e0006 ==>ndisSetupUpwardHandlers : Miniport A8065A70
8153 PID:400002 TID:9e0006 <==ndisSetupUpwardHandlers : Miniport A8065A70
8154 PID:400002 TID:9e0006 <==ndisSetupLwfMiniportHandlers: Miniport A8065A70
8155 PID:400002 TID:9e0006 <==NdisFSetAttributes: Filter A8068330
8156 PID:400002 TID:9e0006 Unknown: DEBUGCHK failed in file d:\bt\2034\private\winceos\net\wlan\sys\infra\driver\protocol.c at line 3356
8159 PID:400002 TID:9e0006 <==ndisAllocateConfigurationString: ServiceName A8065128, AdapterInstanceName A806646C
8166 PID:400002 TID:9e0006 ## LOOKASIDE INITIALIZE ## [140] bytes, depth [1024]
8166 PID:400002 TID:9e0006 ## LOOKASIDE INITIALIZE ## [140] bytes, depth [1024]
8167 PID:400002 TID:9e0006 ## LOOKASIDE INITIALIZE ## [88] bytes, depth [1024]
8168 PID:400002 TID:9e0006 ## LOOKASIDE INITIALIZE ## [88] bytes, depth [1024]
8170 PID:400002 TID:9e0006 Exception ‘Data Abort’ (0x4): Thread-Id=009e0006(pth=9e4074b0), Proc-Id=00400002(pprc=87d7fad0) ‘NK.EXE’, VM-active=00400002(pprc=87d7fad0) ‘NK.EXE’
8170 PID:400002 TID:9e0006 PC=ee9e7608(nwifi.dll+0x00047608) RA=ee9e63e8(nwifi.dll+0x000463e8) SP=a763ddec, BVA=00000004
8175 PID:400002 TID:9e0006 Exception ‘Raised Exception’ (0x116): Thread-Id=009e0006(pth=9e4074b0), Proc-Id=00400002(pprc=87d7fad0) ‘NK.EXE’, VM-active=00400002(pprc=87d7fad0) ‘NK.EXE’
8181 PID:400002 TID:9e0006 PC=efe5b20c(k.coredll.dll+0x0005b20c) RA=80081f3c(kernel.dll+0x0002df3c) SP=a763d3f8, BVA=ffffffff

Here the exception is raise by the nwifi.dll and how can I correct it ???

On Nov 27, 2015, at 3:33 AM, xxxxx@gmail.com wrote:

While developing the miniport driver I got an exception.
Right now, I am in MPInitialize stage… But, my all structures are registered properly with NDIS framework and I have not got any error in my code. Below are the detail logs : -

Well, you can’t really say “I have not got any error in my code”. What you’re seeing looks like a null pointer dereference. Perhaps one of the structures you are setting up is missing some required pointer value.

Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Dear Developers,
Greetings!

Hi Tim,
Thanks for reply. But I am curious to know that how you recognize that it is just because of null poibter deference.???

xxxxx@gmail.com wrote:

Hi Tim,
Thanks for reply. But I am curious to know that how you recognize that it is just because of null poibter deference.???

This is the initial exception:

8170 PID:400002 TID:9e0006 Exception ‘Data Abort’ (0x4): Thread-Id=009e0006(pth=9e4074b0), Proc-Id=00400002(pprc=87d7fad0) ‘NK.EXE’, VM-active=00400002(pprc=87d7fad0) ‘NK.EXE’
8170 PID:400002 TID:9e0006 PC=ee9e7608(nwifi.dll+0x00047608) RA=ee9e63e8(nwifi.dll+0x000463e8) SP=a763ddec, BVA=00000004

On an ARM processor, a “Data Abort” (code 4) indicates a bad address reference, similar to “Access Violation” in an Intel processor. When you get a Data Abort, the BVA register shows you which address caused the problem. In this case, BVA is 4, which means you tried to fetch a value based off of a null pointer.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.