Re: Networking releated threads crashing with Q4 QFEs installed.

From: Danny (danny_at_nospam.com)
Date: 04/27/04


Date: Tue, 27 Apr 2004 14:16:36 -0400

Hi All,

Update on this issue. I believe the problem I was seeing is an issue with
NdisOpenFile(). If I call this function for a file that does not exist, I
always see a failure in NDIS later on. These failures are always memory
related. The original driver I had would look for a firmware data file using
NdisOpenFile() and if it was not found (which it never would) it would use
an array in the driver as the firmware data. When I created this firmware
data file it would always be found and there is no issue. It seems that
NdisOpenFile corrupts memory when it does not find the file. Note however
this is only seen after installing Q4 QFEs.

Also, I was wondering where NdisOpenFile() looks for the file that needs
opening. I ask this because in the original driver it would pass just the
file name (firmware.hex) and it would successfully open this file when it is
only located in the windows directory (\windows\firmware.hex). Also, when I
try to pass it a file on my flash disk (\Flash Disk\firmware.hex) it always
fails.

Cheers
Danny

"Danny" <danny@nospam.com> wrote in message
news:%23NN7jJQDEHA.2712@TK2MSFTNGP10.phx.gbl...
> Hi Michael,
>
> We cannot use this driver as a solution because we need a driver that can
> detect the old firmware and flash the card to the new firmware. However, I
> will try the driver that comes with PB on a card that has already been
> flashed.
>
> I have found that including the firmware in the binary image as an array
of
> (500K) bytes is what is causing the problem. We have separated it out into
a
> data file and load it using NdisOpenFile and it seems to be working well.
> Like I said before, this problem is only seen with Q4 QFEs.
>
> Cheers
> Danny
>
> "Michael Sisson [MS]" <msiss_at_microsoft_dot_com> wrote in message
> news:OI%23PmQKDEHA.1456@TK2MSFTNGP09.phx.gbl...
> > I haven't been able to find a WinCE 4.2 driver for this card on the
Intel
> > web site.
> >
> > Would you mind an experiment? Create a new workspace and , instead of
> adding
> > the Intel driver, use the Platform Settings dialog to set the build flag
> > BSP_NIC_ISLP2NDS with a value of 1.
> >
> > Does it build? Will your device recognize the card when inserted?
> >
> > Michael [MS]
> > Windows CE Sustained Engineering
> > This posting is provided "AS IS" with no warranties, and confers no
> rights.
> >
> >
> > "Danny" <danny@nospam.com> wrote in message
> > news:e4IRvH2CEHA.684@tk2msftngp13.phx.gbl...
> > > Thanks for you quick response.
> > >
> > > The card we are using is an Intel PRO/Wireless 2011B LAN CF Card. The
> > latest
> > > driver (the one I am having problems with) actually puts new firmware
on
> > the
> > > card an makes it report itself as a Intersil Prism ISL37101P SSF
> Adapter.
> > So
> > > I guess you could say it is an Intersil Prism card. However, one thing
> > that
> > > I have noticed is that this driver requires the /Zm200 compiler flag.
> This
> > > is needed because it returns the following error message "fatal error
> > C1076:
> > > compiler limit: internal heap limit reached; use /Zm to specify a
higher
> > > limit" when compiling the file that contains the new firmware (as an
> array
> > > of 568712 bytes). Could this problem be due to this unually large
amount
> > of
> > > global data?
> > >
> > > Cheers
> > > Danny
> > >
> > > "Michael Sisson [MS]" <msiss_at_microsoft_dot_com> wrote in message
> > > news:ey7O33sCEHA.308@TK2MSFTNGP11.phx.gbl...
> > > > Hello, sir,
> > > >
> > > > We have not seen this with the cards we normally test with. What
> > > network
> > > > card are you using? Please include manufacturer and model.
> > > >
> > > > Thanks,
> > > > Michael [MS]
> > > > Windows CE Sustained Engineering
> > > > This posting is provided "AS IS" with no warranties, and confers no
> > > rights.
> > > >
> > > >
> > > > "Danny" <danny@nospam.com> wrote in message
> > > > news:ea0D5JrCEHA.2052@TK2MSFTNGP11.phx.gbl...
> > > > > Hi All,
> > > > >
> > > > > After installing Q4 QFE's for PB 4.2 and the ARMV4I processor my
> > > platforms
> > > > > are now experiencing crashing on power up. The crashing occurs in
> > > > different
> > > > > locations but it is always in a networking related thread and in a
> > heap
> > > > > management function. In Q4 there was one QFE (031203_KB812950)
that
> > > modify
> > > > > these functions. I have not tried installing one QFE at a time and
> > > confirm
> > > > > this is the QFE from that quarterly that caused the problem
because
> > that
> > > > > would take a long time, and from the description it is the most
> likely
> > > > > candidate. There was a note in the readme file for this QFE that
> > > mentions
> > > > > modifications that are required for the platform to support the
new
> > > > > features. However, are any modifications require if you do require
> the
> > > new
> > > > > features? Has anyone else seen this problem? Could this be a
problem
> > > with
> > > > > one of my drivers? I only notice this problem when I have a
specific
> > > > 802.11
> > > > > radio installed. I have included call stack captures from some of
> the
> > > > > locations were the crash happens most often.
> > > > >
> > > > > Cheers
> > > > > Danny
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
>
############################################################################
> > > > > ##################
> > > > > COREDLL!MergeFreeItems(region * 0x00000000, item * 0xfffffa00)
line
> > 630
> > > +
> > > > 4
> > > > > bytes
> > > > > COREDLL!Int_HeapFree(void * 0x00000000, unsigned long 0xfffffa00,
> void
> > *
> > > > > 0x00000610) line 1375
> > > > > COREDLL!HeapFree(void * 0x00000000, unsigned long 0xfffffa00, void
*
> > > > > 0x00000610) line 1306
> > > > > CXPORT!CTEFreeMem(unsigned char * 0x00000000) line 2018
> > > > > NDIS!NdisOpenFile(int * 0x00000000, void * * 0xfffffa00, unsigned
> int
> > *
> > > > > 0x00000610, _UNICODE_STRING * 0x00000610, _LARGE_INTEGER {...})
> line
> > > 3100
> > > > > IMWEBN51!CW10OpenFile(_CW10_ADAPTER * 0x00000000, _UNICODE_STRING
*
> > > > > 0xfffffa00, void * * 0x00000610, unsigned char * * 0x00000610,
> > unsigned
> > > > int
> > > > > * 0x0637e8b0) line 1056
> > > > > IMWEBN51!CW10LoadFirmware(_CW10_ADAPTER * 0x00000000) line 146
> > > > > IMWEBN51!CW10RegisterAdapter(_CW10_ADAPTER * 0x00000000, void *
> > > > 0xfffffa00)
> > > > > line 1045 + 8 bytes
> > > > > IMWEBN51!CW10Initialize(int * 0x00000000, unsigned int *
0xfffffa00,
> > int
> > > *
> > > > > 0x00000610, unsigned int 0x00000610, void * 0x0003a690, void *
> > > 0x0637efe4)
> > > > > line 741 + 8 bytes
> > > > > NDIS!ndisMInitializeAdapter(_NDIS_M_DRIVER_BLOCK * 0x00000000,
> > > > > _NDIS_WRAPPER_CONFIGURATION_HANDLE * 0xfffffa00, _UNICODE_STRING *
> > > > > 0x00000610, void * 0x00000610) line 737
> > > > > NDIS!ndisInitializeAdapter(_NDIS_M_DRIVER_BLOCK * 0x00000000,
> > > > > _CEDEVICE_OBJECT * 0xfffffa00, _UNICODE_STRING * 0x00000610, void
*
> > > > > 0x00000610) line 1100 + 28 bytes
> > > > > NDIS!ndisPnPStartDevice(_CEDEVICE_OBJECT * 0x00000000, _IRP *
> > > 0xfffffa00)
> > > > > line 3250 + 28 bytes
> > > > > NDIS!ndisAddDevice(_CEDRIVER_OBJECT * 0x00000000, _UNICODE_STRING
*
> > > > > 0xfffffa00, _CEDEVICE_OBJECT * 0x00000610, unsigned long
0x00000610)
> > > line
> > > > > 3624 + 12 bytes
> > > > > NDIS!CeDeviceCreateDeviceForLoadedDriver(_CEDRIVER_OBJECT *
> > 0x00000000,
> > > > > unsigned short * 0xfffffa00, unsigned long 0x00000610, unsigned
long
> > > > > 0x00000610, long (_CEDRIVER_OBJECT *, _UNICODE_STRING *,
> > > _CEDEVICE_OBJECT
> > > > *,
> > > > > unsigned long)* 0x03bce608 ndisAddDevice(_CEDRIVER_OBJECT *,
> > > > _UNICODE_STRING
> > > > > *, _CEDEVICE_OBJECT *, unsigned long), _CEDEVICE_OBJECT * *
> > 0x0637f09c)
> > > > > line 214 + 40 by
> > > > > NDIS!CeDeviceLoadDriverAndCreateDevice(unsigned short *
0x00000000,
> > > > unsigned
> > > > > short * 0xfffffa00, unsigned short * 0x00000610, unsigned short *
> > > > > 0x00000610, unsigned long 0x00000008, unsigned long 0x00000001,
long
> > > > > (_CEDRIVER_OBJECT *, _UNICODE_STRING *, _CEDEVICE_OBJECT *,
unsigned
> > > > long)*
> > > > > ...) line 260 + 32 bytes
> > > > > NDIS!ndisAddPCCardDevice(unsigned short * 0x00000000) line 1709
> > > > > NDIS!NDS_Init(unsigned long 0x00000000) line 544 + 8 bytes
> > > > > DEVICE!RegisterDeviceEx(const unsigned short * 0x00000000,
unsigned
> > long
> > > > > 0xfffffa00, const unsigned short * 0x00000610, unsigned long
> > 0x00000610,
> > > > > unsigned long 0x0637f50c, unsigned long 0x00000000, unsigned long
> > > > > 0x00000000, void * 0x00000000) line 493 + 20 bytes
> > > > > DEVICE!StartOneDriver(const unsigned short * 0x00000000, unsigned
> long
> > > > > 0xfffffa00, const _REGINI * 0x00000610, unsigned long 0x00000610,
> void
> > *
> > > > > 0x0637f70c) line 1032
> > > > > DEVICE!FS_ActivateDeviceEx(const unsigned short * 0x00000000,
const
> > > > _REGINI
> > > > > * 0xfffffa00, unsigned long 0x00000610, void * 0x00000610) line
690
> > > > > COREDLL!xxx_ActivateDeviceEx(const unsigned short * 0x00000000,
> const
> > > void
> > > > *
> > > > > 0xfffffa00, unsigned long 0x00000610, void * 0x00000610) line 48
> > > > > PCMCIA!LoadPCCardDriver(_CARD_SOCKET_HANDLE {...}, unsigned short
*
> > > > > 0x00000000, unsigned short * 0xfffffa00, unsigned short *
> 0x00000610)
> > > > line
> > > > > 536 + 24 bytes
> > > > > PCMCIA!FindPCCardDriver(_CARD_SOCKET_HANDLE {...}, unsigned short
*
> > > > > 0x00000000) line 628 + 36 bytes
> > > > > PCMCIA!FindDriversThread(void * 0x00000000) line 709
> > > > > COREDLL!ThreadBaseFunc(void * 0x00000000, unsigned long
0xfffffa00)
> > > line
> > > > > 419
> > > > >
> > > > >
> > > >
> > >
> >
>
############################################################################
> > > > > ##################################3
> > > > >
> > > > > COREDLL!FindFreeItemInRegion(void * 0x00000000, region *
0x03d03b6c,
> > int
> > > > > 0x06178008) line 841 + 8 bytes
> > > > > COREDLL!FindFreeItem(void * 0x00000000, heap * 0x03d03b6c,
unsigned
> > long
> > > > > 0x06178008, region * * 0x00000510) line 941 + 16 bytes
> > > > > COREDLL!Int_HeapAlloc(void * 0x00000000, unsigned long 0x03d03b6c,
> > > > unsigned
> > > > > long 0x06178008) line 1256 + 20 bytes
> > > > > COREDLL!HeapAlloc(void * 0x00000000, unsigned long 0x03d03b6c,
> > unsigned
> > > > long
> > > > > 0x06178008) line 1198
> > > > > CXPORT!CTEAllocMem(unsigned long 0x00000000) line 1955 + 20 bytes
> > > > > NDIS!NdisAllocateMemoryWithTag(void * * 0x00000000, unsigned int
> > > > 0x03d03b6c,
> > > > > unsigned long 0x06178008) line 194 + 8 bytes
> > > > > IMWEBN51!NewImageBlock(_CW10_ADAPTER * 0x00000000) line 100
> > > > > IMWEBN51!DecodeHexFile(_CW10_ADAPTER * 0x00000000, unsigned char *
> > > > > 0x03d03b6c, unsigned int 0x06178008, unsigned long * 0x00000510,
> > > > > Image_Block_Desc_Struct * * 0x001855ec, Image_Block_Desc_Struct *
*
> > > > > 0x0634e870, Image_Block_Desc_Struct * * 0x0634e874) line 271 + 8
> > bytes
> > > > > IMWEBN51!CW10BuildImage(_CW10_ADAPTER * 0x00000000, unsigned char
*
> > > > > 0x03d03b6c, unsigned int 0x06178008, char * 0x00000510, unsigned
> char
> > *
> > > > > 0x0634e8e0, unsigned long * 0x001855f4, Image_Block_Desc_Struct *
*
> > > > > 0x001855ec) line 650 + 36 bytes
> > > > > IMWEBN51!CW10LoadFirmware(_CW10_ADAPTER * 0x00000000) line 192 +
76
> > > bytes
> > > > > IMWEBN51!CW10RegisterAdapter(_CW10_ADAPTER * 0x00000000, void *
> > > > 0x03d03b6c)
> > > > > line 1045 + 8 bytes
> > > > > IMWEBN51!CW10Initialize(int * 0x00000000, unsigned int *
0x03d03b6c,
> > int
> > > *
> > > > > 0x06178008, unsigned int 0x00000510, void * 0x0003a740, void *
> > > 0x0634efe4)
> > > > > line 741 + 8 bytes
> > > > > NDIS!ndisMInitializeAdapter(_NDIS_M_DRIVER_BLOCK * 0x00000000,
> > > > > _NDIS_WRAPPER_CONFIGURATION_HANDLE * 0x03d03b6c, _UNICODE_STRING *
> > > > > 0x06178008, void * 0x00000510) line 737
> > > > > NDIS!ndisInitializeAdapter(_NDIS_M_DRIVER_BLOCK * 0x00000000,
> > > > > _CEDEVICE_OBJECT * 0x03d03b6c, _UNICODE_STRING * 0x06178008, void
*
> > > > > 0x00000510) line 1100 + 28 bytes
> > > > > NDIS!ndisPnPStartDevice(_CEDEVICE_OBJECT * 0x00000000, _IRP *
> > > 0x03d03b6c)
> > > > > line 3250 + 28 bytes
> > > > > NDIS!ndisAddDevice(_CEDRIVER_OBJECT * 0x00000000, _UNICODE_STRING
*
> > > > > 0x03d03b6c, _CEDEVICE_OBJECT * 0x06178008, unsigned long
0x00000510)
> > > line
> > > > > 3624 + 12 bytes
> > > > > NDIS!CeDeviceCreateDeviceForLoadedDriver(_CEDRIVER_OBJECT *
> > 0x00000000,
> > > > > unsigned short * 0x03d03b6c, unsigned long 0x06178008, unsigned
long
> > > > > 0x00000510, long (_CEDRIVER_OBJECT *, _UNICODE_STRING *,
> > > _CEDEVICE_OBJECT
> > > > *,
> > > > > unsigned long)* 0x03bce608 ndisAddDevice(_CEDRIVER_OBJECT *,
> > > > _UNICODE_STRING
> > > > > *, _CEDEVICE_OBJECT *, unsigned long), _CEDEVICE_OBJECT * *
> > 0x0634f09c)
> > > > > line 214 + 40 by
> > > > > NDIS!CeDeviceLoadDriverAndCreateDevice(unsigned short *
0x00000000,
> > > > unsigned
> > > > > short * 0x03d03b6c, unsigned short * 0x06178008, unsigned short *
> > > > > 0x00000510, unsigned long 0x00000008, unsigned long 0x00000001,
long
> > > > > (_CEDRIVER_OBJECT *, _UNICODE_STRING *, _CEDEVICE_OBJECT *,
unsigned
> > > > long)*
> > > > > ...) line 260 + 32 bytes
> > > > > NDIS!ndisAddPCCardDevice(unsigned short * 0x00000000) line 1709
> > > > > NDIS!NDS_Init(unsigned long 0x00000000) line 544 + 8 bytes
> > > > > DEVICE!RegisterDeviceEx(const unsigned short * 0x00000000,
unsigned
> > long
> > > > > 0x03d03b6c, const unsigned short * 0x06178008, unsigned long
> > 0x00000510,
> > > > > unsigned long 0x0634f50c, unsigned long 0x00000000, unsigned long
> > > > > 0x00000000, void * 0x00000000) line 493 + 20 bytes
> > > > > DEVICE!StartOneDriver(const unsigned short * 0x00000000, unsigned
> long
> > > > > 0x03d03b6c, const _REGINI * 0x06178008, unsigned long 0x00000510,
> void
> > *
> > > > > 0x0634f70c) line 1032
> > > > > DEVICE!FS_ActivateDeviceEx(const unsigned short * 0x00000000,
const
> > > > _REGINI
> > > > > * 0x03d03b6c, unsigned long 0x06178008, void * 0x00000510) line
690
> > > > > COREDLL!xxx_ActivateDeviceEx(const unsigned short * 0x00000000,
> const
> > > void
> > > > *
> > > > > 0x03d03b6c, unsigned long 0x06178008, void * 0x00000510) line 48
> > > > > PCMCIA!LoadPCCardDriver(_CARD_SOCKET_HANDLE {...}, unsigned short
*
> > > > > 0x00000000, unsigned short * 0x03d03b6c, unsigned short *
> 0x06178008)
> > > > line
> > > > > 536 + 24 bytes
> > > > > PCMCIA!FindPCCardDriver(_CARD_SOCKET_HANDLE {...}, unsigned short
*
> > > > > 0x00000000) line 628 + 36 bytes
> > > > > PCMCIA!FindDriversThread(void * 0x00000000) line 709
> > > > > COREDLL!ThreadBaseFunc(void * 0x00000000, unsigned long
0x03d03b6c)
> > > line
> > > > > 419
> > > > >
> > > > >
> > >
> #########################################################################
> > > > >
> > > > > CXPORT!CTEFreeMem(unsigned char * 0x00000000) line 2003
> > > > > NDIS!NdisFreeMemory(void * 0x00000000, unsigned int 0x01fc42f8,
> > unsigned
> > > > int
> > > > > 0x00000001) line 246
> > > > > NDISUIO!ndisuioFreeBindResources(_NDISUIO_OPEN_CONTEXT *
0x00000000)
> > > line
> > > > > 1049
> > > > > NDISUIO!ndisuioShutdownBinding(_NDISUIO_OPEN_CONTEXT * 0x00000000)
> > line
> > > > 982
> > > > > NDISUIO!NdisuioUnbindAdapter(int * 0x00000000, void * 0x01fc42f8,
> void
> > *
> > > > > 0x00000001) line 332
> > > > > NDIS!ndisUnbindProtocol(_NDIS_OPEN_BLOCK * 0x00000000, unsigned
char
> > > 0xf8)
> > > > > line 2428
> > > > > NDIS!ndisCloseMiniportBindings(_NDIS_MINIPORT_BLOCK * 0x00000000,
> > > > > _NDIS_PROTOCOL_BLOCK * 0x01fc42f8) line 1581
> > > > > NDIS!INdisBindOrUnbindThread(BindThreadContext * 0x00000000) line
> > 1162
> > > > > COREDLL!ThreadBaseFunc(void * 0x00000000, unsigned long
0x01fc42f8)
> > > line
> > > > > 419
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>



Relevant Pages

  • Re: New driver loading scheme for Project Evil, need input
    ... additional files that have to be loaded via NdisOpenFile(). ... additionaly firmware images that need to be processed. ... your driver after the system is up and running multiuser. ... the firmware file into a .ko and pre-load that along with the driver. ...
    (freebsd-current)
  • Re: [PATCH][2.6][2/14] documentation update
    ... add udev.txt which describes how to use dvb and udev/sysfs ... The firmware can be loaded automatically via the hotplug manager ... +- For the dvb-ttpci driver/av7110 card you can download the firmware files from ... +file you probably know from the 2.4 DVB releases driver. ...
    (Linux-Kernel)
  • Re: Fedora 5 - Intel Pro/Wireless LAN 2100 3B Mini PCI adapter woes.
    ... Guide to install the Intel PRO Wireless 2100 Driver for Linux ... The ipw2100 binary firmware image. ...
    (comp.os.linux.networking)
  • Filmware Installation
    ... Broadcom wireless chip needs software, called "firmware", that runs on ... To get such firmware on your system, you must download the ... driver from a legal distribution point, ... extract the firmware from that Broadcom driver by using b43-fwcutter ...
    (Ubuntu)
  • Re: Problem: NIC transmit timeouts
    ... I've seen two causes for this: 1) driver bug, 2) firmware bug. ... Another fun aspect of case 2) is that since its PCI traffic related, ... the MTT register, and the equivalent of the ICH ...
    (Linux-Kernel)