Re: Driver getting Page Fault 0Eh Fault=0000, only when 2 PCI cards present in system

From: Mark Roddy (markr_at_hollistech.com)
Date: 05/13/04


Date: Thu, 13 May 2004 06:45:49 -0400

There certainly are stack limits that a poorly designed function can exceed,
however you will tend to get a different bugcheck. Also the stack will be
skronk. Your stack wasn't skronk, it just seemed to have the wrong symbols.
My guess is that you have some sort of overflow problem and that by moving
local variables around you have managed to mask it, for now.

-- 
=====================
Mark Roddy
Windows 2003/XP/2000 Consulting
Hollis Technology Solutions 603-321-1032
www.hollistech.com
markr@hollistech.com
"Curtis Rubel" <crubel@compro.net> wrote in message
news:5ABE2469-C318-4D56-A2FB-60501369C2BC@microsoft.com...
> Softicie hasn't misled to me up to this point,
> but anything is possible.
>
> I'll see if I can find another PC to use and setup
> Wndbg, maybe it will give us some better clues.
> I haven't used it since training so it may take a
> few days to get it up and running properly.
> It would make the recovering from the crashes
> alittle easier as its corrupting my disk even
> though I have write-caching disabled in the
> disk device settings.
>
> As soon as I do, if I have not got things 100%
> working I'll submit an update.  I'll try
> to remember in the future to only submit
> Wndbg traces.
>
> An update though, I have made some progress by
> simply moving most of the initialization code out of
> the StartHandler into its own subroutine.  I am not
> sure why that would have any affect but it seems to
> for some reason.
>
> Is there a size issue on the size of a subroutine in a driver?
> I haven't heard of any but...
>
> At any rate I am getting closer.  I have 95% of the code back
> into the driver and its still loading ok on both PCI cards with
> the start handler split apart.
>
> Thanks for the reply,
>
> Curtis Rubel
>
>
>
>
>
>
>
>      ----- Peter Wieland [MSFT] wrote: -----
>
>      Is there some magic to deciphering SoftICE stack traces?
IoBuildPartialMdl
>      doesn't call IoReportResourceUsage as far as i'm aware.
>
> Maybe someone from Compuware can answer that question for you...
>
>
>
>      -p
>
>      -- 
>      This posting is provided "AS IS" with no warranties, and confers no
rights.
>      "Curtis Rubel" <crubel@compro.net> wrote in message
>      news:a90c8db8.0405120442.48e4d34a@posting.google.com...
>      > Hello again,
>      >> I now have a stack dump to add to the description of the problem
>      >> FrameEBP     RetEIP      Symbol
>      > F78DEA28    804EB3C1     EPRM!HandleStartDevice
>      >                         [driver.cpp#738]
>      > F78DEA5C    80576500     NTOSKRNL!IoBuildPartialMdl+00E3
>      > F78DEA88    8057656F     NTOSKRNL!IoReportResourceUsage+7814
>      > F78DEAC8    804F1B92     NTOSKRNL!IoReportResourceUsage+7883
>      > F78DEAE4    80575D53
NTOSKRNL!IoReportTargetDeviceChangeAsynchronis+04BE
>      > F78DED2C    80576190     NTOSKRNL!IoReportResourceUsage+7067
>      > F78DED54    804F22E0     NTOSKRNL!IoReportResourceUsage+74A4
>      > F78DED7C    80528545
NTOSKRNL!IoReportTargetDeviceChangeAsynchronis+0C0C
>      > F78DEDAC    805B05C6     NTOSKRNL!ExQueueWorkItem+0191
>      > F78DEDDC    80534DE6
NTOSKRNL!PsRemoveCreateThreadNotifyRoutine+01C0
>      > 00000000    00000000     NTOSKRNL!KiDispatchInterrupt+0706
>      >> Thanks,
>      >>>>> crubel@compro.net (Curtis Rubel) wrote in message
>      > news:<a90c8db8.0405111549.12606db9@posting.google.com>...
>      >> Hello everyone,
>      >>>> I have a Win2k/XP device driver that appears to have found a
problem
>      >> in the OS's Paging support.  With only one of our PCI cards
installed
>      >> the driver loads and runs ok.  Driver verifier shows no errors,
loading,
>      >> unloading or running the test suite that exercises the user API
and
>      >> driver using all available calls.  Even ran this driver with /PAE
with
>      >> no problems.
>      >>>> However, when I install the 2nd PCI card the system gets a Page
Fault
>      >> 0EH Fault=0000 when attempting jump to my start device routine.
The
>      >> add device routine finishes successfully.
>      >>>> The PCI card is a memory card, that has 64MB of memory, a 256K
register
>      >> area in Memory Space and also uses 1 PCI interrupt. The memory
resources
>      >> are all mapped into the driver via:
>      >>>> pDevExt->local_sram_ptr = MmMapIoSpace
>      >> (pPartialDescriptor->u.Memory.Start,
>      >> pPartialDescriptor->u.Memory.Length,
>      >> MmNonCached);
>      >>>> calls.  I also setup a 1MB CommonBuffer for DMA transfers
to/from the
>      >> card.
>      >>>> The first PCI devices finishes loading/init. everything OK.  The
second
>      >> PCI
>      >> card starts to initialize, the Add Device routine runs ok, the PNP
>      >> manager
>      >> then issues the IRP_MN_START_DEVICE, which I decode and then call
my
>      >> start device handler.  When the system jumps to my Start device
hander
>      >> I get Page Fault 0Eh Fault=0000 apparantly sometime before it
actually
>      >> reaches my Start Device function as I have a breakpoint set right
at
>      >> the beginning of it and it never makes it there.
>      >>>> Does WinXP support mapping multiple PCI devices with large
onboard
>      >> memory into your driver?
>      >>>> Is there something I am missing that needs to be configure in
the
>      >> system to run large memory PCI devices?
>      >>>> I have tried setting SystemPages to 0xffffffff as some posts are
>      >> suggesting
>      >> but that has no affect on this problem.
>      >>>> Either PCI card runs fine standalone.
>      >>>> Any suggestions would be appreciated.
>      >>>> Curtis Rubel
>      >> crubel@compro.net
>
>
>


Relevant Pages

  • Re: amd64 stack trace from kernel driver code
    ... of a function in code you own and record a stack. ... Windows Filesystem and Driver Consulting ... and frees so that when the driver is unloaded any memory in use can be ... A data reduction program then associates the allocation info ...
    (microsoft.public.development.device.drivers)
  • Re: amd64 stack trace from kernel driver code
    ... of a function in code you own and record a stack. ... Windows Filesystem and Driver Consulting ... and frees so that when the driver is unloaded any memory in use can be ... A data reduction program then associates the allocation info ...
    (microsoft.public.development.device.drivers)
  • Re: [PATCH 0/3] New firewire stack
    ... My main point about ohci1394 (the old stacks PCI driver) is, ... The big problems in the ohci1394 drivers is the irq_handler, bus reset ... reset, so there is no need to complicate the core stack with this extra state, ... interfaces have slightly disjoint feature sets and can't really be phased out. ...
    (Linux-Kernel)
  • Re: [PATCH 0/3] New firewire stack
    ... My main point about ohci1394 (the old stacks PCI driver) is, ... The big problems in the ohci1394 drivers is the irq_handler, bus reset ... reset, so there is no need to complicate the core stack with this extra state, ... interfaces have slightly disjoint feature sets and can't really be phased out. ...
    (Linux-Kernel)
  • Re: how to test RAM?
    ... Driver Verifier. ... REPEAT THE LAST TABLE O N L Y) or match the fault address to the driver. ... Memory corruption, other hardware ... A kernel stack overflow. ...
    (microsoft.public.windowsxp.general)