vsajip / dokan

Automatically exported from code.google.com/p/dokan
0 stars 1 forks source link

dokan.sys crashes WinXP BAD_POOL_CALLER #229

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
It's not so easy to reproduce because it happened only once.
I'm using dokanssh. It's stable enough - no crashes during one month.
So, BSOD appeared while I save or read some file on Dokan drive.
Option "Disable cache" enabled. I use it enough long without problems, but may 
be it's a reason.

What is the expected output? What do you see instead?
Stable work.
BSOD.

What version of the product are you using? On what operating system?
dokan/dokanssh 0.6, winxp sp3

Please provide any additional information below.
It seems the only way to find a problem is analyzing dump file

Original issue reported on code.google.com by 100gramm...@gmail.com on 20 Jun 2011 at 7:37

Attachments:

GoogleCodeExporter commented 9 years ago
Had this problem five times in windows 7 64 bits already.
I'm not sure, but I think my computer was idle for 3~4 minutes everytime it 
happened.

Option "Disable cache" disabled.

Original comment by pie...@phenrique.com.br on 23 Dec 2011 at 1:32

GoogleCodeExporter commented 9 years ago
Same problem with sshfs that is using the Dokan library
windows 7 64 bits.
Very frequent Blue screens with BAD_POOL_CALLER

Original comment by deus.con...@gmail.com on 16 Apr 2013 at 2:42

GoogleCodeExporter commented 9 years ago
Finally figured out what was crashing my fresh install..Thanks!

Original comment by cp...@vmenu.com on 18 Apr 2013 at 2:40

GoogleCodeExporter commented 9 years ago
I recommend to use BlueScreenView - the best way to find reason of BSODs

Original comment by 100gramm...@gmail.com on 18 Apr 2013 at 4:32

GoogleCodeExporter commented 9 years ago
Used Wwindbg to find out the cause of blue screens was Dokan on Windows 8 64 
bit. Switched to STFP Net Drive. Seems to have decent perf

Original comment by daniel.phin on 20 Apr 2013 at 6:40

GoogleCodeExporter commented 9 years ago
I find that the crash dump is something like this:
nt!KeBugCheckEx
nt!ExDeferredFreePool+0x1201
dokan!DokanFreeFCB+0xf5 [e:\projects\dokan\sys\create.c @ 186]
dokan!DokanCompleteCreate+0x3c4 [e:\projects\dokan\sys\create.c @ 644]
dokan!DokanCompleteIrp+0x304 [e:\projects\dokan\sys\event.c @ 362]
dokan!DokanDispatchDeviceControl+0x218 [e:\projects\dokan\sys\device.c @ 469]
nt!IopXxxControlFile+0x607
nt!NtDeviceIoControlFile+0x56
nt!KiSystemServiceCopyEnd+0x13

There are other types of stacks, but seems all related to DokanFreeFCB. So I 
check the allocation and free of FCB structure. In DokanGetFCB function of 
create.c, InterlockedIncrement(&fcb->FileCount) is outside the critical region. 
So there exist such case: let's take 2 threads: thread A and thread B. If 
thread A is suspended just before 'InterlockedIncrement(&fcb->FileCount)' 
statement, and suppose fcb->FileCount is now 1. Then suppose thread B enters 
DokanFreeFCB, it can free the FCB as FileCount is now 1. After that thread A 
resumes, it can use the FCB again! When it calls DokanFreeFCB, problem occurs. 
So, it'e better move 'InterlockedIncrement(&fcb->FileCount)' before 
'ExReleaseResourceLite(&Vcb->Resource)', like this:
    InterlockedIncrement(&fcb->FileCount);  
    ExReleaseResourceLite(&Vcb->Resource);
    KeLeaveCriticalRegion();

    return fcb;

Also, I changed 'Fcb->FileCount--' to InterlockedDecrement(&Fcb->FileCount), to 
make it safer.
Now it seems the BSOD disappears.

Original comment by kuanghf...@gmail.com on 27 Aug 2013 at 7:34

GoogleCodeExporter commented 9 years ago
The issue is also present on Windows 8.1 64bit.

Original comment by thomas00...@googlemail.com on 25 Mar 2014 at 4:26

GoogleCodeExporter commented 9 years ago

Original comment by martin.d...@gmail.com on 7 Aug 2014 at 4:53

Attachments:

GoogleCodeExporter commented 9 years ago
Martin, your patch contains error:
create.c(179) : error C2143: syntax error : missing ';' before 'if'

BTW, what is correct way to build?

0. Install Windows Driver Kit version 7.1
1. Start cmd
2. call C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\
3. cd /d x:\path\to\dokan-read-only\sys\
4. build /wcbg

Only in such way I was able to make a driver.

Original comment by 100gramm...@gmail.com on 10 Aug 2014 at 1:59

GoogleCodeExporter commented 9 years ago
Does anybody knows how to build and install fixed driver in Win7 x64?
I compile in such way:
0. Install Windows Driver Kit version 7.1
1. Start cmd
2. call C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ x64
3. cd /d x:\path\to\dokan-read-only\sys\
4. build /wcbg
5. Install DokanInstall_0.6.0.exe
6. Copy dokan.sys from objfre_win7_amd64\amd64 to C:\Windows\System32\drivers 
(with overwrite)
7. Reboot

After that it's impossible to mount drive with dokan-sshfs-0.6.0: Dokan driver 
install error.
win-sshfs-0.0.1.5 shows the same error.

Original comment by 100gramm...@gmail.com on 1 Oct 2014 at 11:53

GoogleCodeExporter commented 9 years ago
I'm getting BSOD (bad_pool_caller) on Windows 8.1 from Dokan.sys. 
Anyone have a solution for this?

Original comment by scott.an...@i-possible.com.au on 28 Oct 2014 at 12:48

GoogleCodeExporter commented 9 years ago
FYI: With the patch is working without troubles since august (every day usage).

Original comment by martin.d...@gmail.com on 3 Dec 2014 at 3:33

GoogleCodeExporter commented 9 years ago
Martin, can you share fixed driver or full solution?
A already build it, but dokan-sshfs is not working with it (see msg #10)

Original comment by 100gramm...@gmail.com on 3 Dec 2014 at 11:13