+[8.50b1+] Crashes on cancel delete in Virtual Panel

Bug reports will be moved here when the described bug has been fixed

Moderators: white, Hacker, petermad, Stefan2

Post Reply
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

+[8.50b1+] Crashes on cancel delete in Virtual Panel

Post by *MVV »

Problem can be reproduced with VirtualPanel 2.0.7.1354 and TCx32/64 8.51b1-8.51rc2. Steps are easy: delete folder containing a lot of files (e.g. copy of Windows folder). Some versions show crash message, some just crash and I see Windows error message.

Code: Select all

---------------------------
Total Commander 8.51RC2
---------------------------
Privileged instruction.
Privileged instruction
Windows 7 SP1 6.1 (Build 7601)

Please report this error to the Author, with a description
of what you were doing when this error occurred!

Windows exception: C0000096
Stack trace:
027CED61
464479  447B66  4484F6  42590C  447A9B  42590C
44B727  447A09  6FB7E0  6FB82D  65B431  663E72
65725B  449033  446589  447B66  4484F6  >42590C
447A9B  42590C  42AFC8  42B064  70550F  
Raw:
67A12D  44886F  446589  4487C5  447B66  4484F6
42590C  447A9B  42590C  4FB0A9  6C4ED8  447A09
42590C  44886F  446589  4487C5  435E73  464479
447B66  4484F6  448519  42590C  447A9B  42590C
44B727  447A09  70262F  6FB7E0  6FB82D  65B431
44886F  43785A  60936A  447A09  42590C  44886F
446589  4487C5  43785A  447AEE  447B66  4484F6
448519  42590C  447A9B  42590C  663E72  6BFD3A
615434  615458  4023EF  4026B8  4036C1  66FE1E
70063C  70063C  70063C  42590C  70063C  70063C

Press Ctrl+C to copy this report!

Code: Select all

---------------------------
Total Commander 8.51RC2
---------------------------
Privileged instruction.
Privileged instruction
Windows 7 SP1 6.1 (Build 7601)

Please report this error to the Author, with a description
of what you were doing when this error occurred!

Windows exception: C0000096
Stack trace:
0442F899
447B66  4484F6  42590C  447A9B  42590C  6FE6A8
6C09BF  447A09  42590C  464479  447B66  4484F6
42590C  447A9B  42590C  6FB7E0  6FB82D  65B431
663E72  65725B  449033  446589  447B66  4484F6
>42590C  447A9B  42590C  42AFC8  42B064  70550F

Raw:
67A12D  44886F  446589  4487C5  4487C5  43785A
447AEE  447B66  4484F6  448519  42590C  447A9B
42590C  6FE6A8  4B99D5  6C09BF  6C5D0B  447A09
42590C  44886F  446589  4487C5  435E73  464479
447B66  4484F6  448519  42590C  447A9B  42590C
5F0071  4487C5  43785A  42590C  70262F  6FB7E0
6FB82D  65B431  447A09  42590C  44886F  446589
4487C5  43785A  447AEE  447B66  4484F6  448519
42590C  447A9B  42590C  615434  615458  446589
4487C5  4487C5  435E73  663E72  447A09  42590C

Press Ctrl+C to copy this report!
Bug can't be reproduced with TC 8.01.[/code]
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Not confirmed - tried with 32-bit and 64-bit TC. Can you give me more information, please?

Here is what I tried:
1. Copied about 10% of Windows folder to other drive
2. Added that "windows" folder to Virtual panel
3a. Deleted "windows" from Virtual panel with Del, aborted in the middle (with mouse or keyboard, no difference)
3b. Re-added "windows" folder, then deleted with "Shift+Del" and confirmed "Delete all"

There was no crash, neither in TC 32-bit nor TC 64-bit.
My questions:
1. Can you also post a crash report for TC 64-bit, please?
2. What are you doing differently?

I used the latest Virtual Panel plugin from www.totalcmd.net.
Author of Total Commander
https://www.ghisler.com
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

I've uploaded test archive here, it contains state file which may be loaded using <load test.lst command in TC command line. I just press Delete on msvc2010, then Cancel, and TC crashes. It may be reproduced with clean INI too.

TCx64 shows following dialog:

Code: Select all

Сигнатура проблемы:
  Имя события проблемы:	BEX64
  Имя приложения:	TOTALCMD64.EXE
  Версия приложения:	8.5.1.0
  Отметка времени приложения:	00000000
  Имя модуля с ошибкой:	StackHash_57c7
  Версия модуля с ошибкой:	0.0.0.0
  Отметка времени модуля с ошибкой:	00000000
  Смещение исключения:	0000000000000000
  Код исключения:	c0000005
  Данные исключения:	0000000000000008
  Версия ОС:	6.1.7601.2.1.0.256.4
  Код языка:	1049
  Дополнительные сведения 1:	57c7
  Дополнительные сведения 2:	57c76270abace853df86b9dbbefaaad7
  Дополнительные сведения 3:	d520
  Дополнительные сведения 4:	d5200fafccb107fa44c5c3fefb300efe

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
  http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
  C:\Windows\system32\ru-RU\erofflps.txt
Maybe there are additional files for this report, I don't know where to find them.


BTW your 3b step looks horrific: it may delete your real files. However it deletes physical files only if Shift is held during confirming in TC dialog (because TC doesn't send any information about delete mode), also it deletes to Recycle Bin by default, and it isn't able to delete w/o adlim rights.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Unfortunately your test.lst file didn't help - I tried it 10 times with TC 32-bit and 10 times with TC 64-bit, no crash when aborting!

The 64-bit crash address isn't in TC, so I guess that the plugin itself crashes.
BTW your 3b step looks horrific: it may delete your real files.
Yes it does - I didn't know whether your report was about removing files from the list, or actually deleting them, so I tried both.
Author of Total Commander
https://www.ghisler.com
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

It is strange anyway why it have worked in TC 8.01 but doesn't work in TC 8.5x...

I checked in debugger, there are no exceptions in my code. Now I checked 64-bit version in debugger and noticed that FsDeleteFileW is not called at all when TC crashes, so crash occurs when I cancel counting. Exception from debugger:

Code: Select all

Unhandled exception at 0x00000000 in TOTALCMD64.EXE: 0xC0000005: Access violation at location 0x0000000000000000.

RAX = 0000000008DB0988 RBX = 0000000000000001 RCX = 00000000036F3F50 RDX = 0000000000000001 RSI = 00000000036F2E90 RDI = 0000000000000000 R8  = 0000000001C0ACA8 R9  = 0000000000210BA4 R10 = 0000000000000000 R11 = 0000000000000212 R12 = 0000000000000000 R13 = 00000000036F2E90 R14 = 0000000000000000 R15 = 0000000000210BA4 RIP = 0000000000000000 RSP = 0000000001C0AE88 RBP = 0000000001C0BF20 EFL = 00010200 
Plugin log:

Code: Select all

19:38:43   8768	FsStatusInfo:	delete operation (8) is started in "\"
19:38:43   8768	FsFindFirst:	000000000EFBCF30, ".", for "\msvc2010"
...
19:38:43   8768	FsFindClose:	000000000EFBCF30
19:38:43   8768	FsStatusInfo:	delete operation (8) is finished in "\"
Have you checked it with enabled counting for deletion?
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

I traced instructions from FsStatusInfo return up to exception, crash occurs here (tested with TC8.51rc3x64):

Code: Select all

00000000006A3061 4C 89 F9             mov         rcx,r15  
00000000006A3064 49 B9 00 00 00 00 00 00 00 00 mov         r9,0  
00000000006A306E BA 03 04 00 00       mov         edx,403h  
00000000006A3073 E8 18 18 DA FF       call        0000000000444890  
00000000006A3078 48 8B 8D F8 EF FF FF mov         rcx,qword ptr [rbp-1008h]  
00000000006A307F 48 BA 01 00 00 00 00 00 00 00 mov         rdx,1  
00000000006A3089 48 8B 85 F8 EF FF FF mov         rax,qword ptr [rbp-1008h]  
00000000006A3090 48 8B 00             mov         rax,qword ptr [rax]  
00000000006A3093 FF 90 C8 00 00 00    call        qword ptr [rax+0C8h]
Some data:

Code: Select all

RAX = 0000000008D805D8 RBX = 0000000000000001 RCX = 0000000006E33F50 RDX = 0000000000000001 RSI = 0000000006E32E90 RDI = 0000000000000000 R8  = 0000000001C0ACA8 R9  = 00000000002D0CC4 R10 = 0000000000000000 R11 = 0000000000000212 R12 = 0000000000000000 R13 = 0000000006E32E90 R14 = 0000000000000000 R15 = 00000000002D0CC4 RIP = 00000000006A3093 RSP = 0000000001C0AE90 RBP = 0000000001C0BF20 EFL = 00000202 

0000000008D806A0 = 0000000000000000 

0x0000000006E33F50  d8 05 d8 08 00 00 00 00 00 00 00 00 00 00  Ш.Ш...........
0x0000000006E33F5E  00 00 00 00 00 00 00 00 00 00 32 00 00 00  ..........2...
0x0000000006E33F6C  00 00 00 00 01 00 00 00 00 00 00 00 00 00  ..............
0x0000000006E33F7A  00 00 00 00 00 00 04 00 00 00 00 00 00 00  ..............
0x0000000006E33F88  00 00 00 00 00 00 00 00 00 00 00 00 00 00  ..............
0x0000000006E33F96  00 00 00 00 00 00 00 00 00 00 00 00 00 00  ..............
0x0000000006E33FA4  00 00 00 00 00 00 00 00 00 00 00 00 00 00  ..............

0x0000000008D805D8  60 08 00 00 00 00 00 00 41 ff 29 00 00 00  `.......Aя)...
0x0000000008D805E6  00 00 60 08 00 00 00 00 00 00 38 7b d0 08  ..`.......8{Р.
0x0000000008D805F4  00 00 00 00 38 3f e3 06 00 00 00 00 00 00  ....8?г.......
0x0000000008D80602  00 00 00 00 00 00 00 00 00 00 00 00 00 00  ..............
0x0000000008D80610  00 00 00 00 00 00 00 00 00 00 00 00 00 00  ..............
0x0000000008D8061E  00 00 00 00 00 00 00 00 00 00 00 00 00 00  ..............
0x0000000008D8062C  00 00 00 00 08 00 00 00 01 00 00 00 00 54  .............T
0x0000000008D8063A  a0 00 00 00 00 00 70 c6 e1 06 00 00 00 00   .....pЖб.....

0x0000000001C0AF18  50 3f e3 06 00 00 00 00 5c 00 5c 00 5c 00  P?г.....\.\.\.
0x0000000001C0AF26  56 00 69 00 72 00 74 00 75 00 61 00 6c 00  V.i.r.t.u.a.l.
0x0000000001C0AF34  20 00 50 00 61 00 6e 00 65 00 6c 00 20 00   .P.a.n.e.l. .
0x0000000001C0AF42  28 00 64 00 65 00 62 00 75 00 67 00 36 00  (.d.e.b.u.g.6.
0x0000000001C0AF50  34 00 29 00 5c 00 00 00 a0 d9 63 03 00 00  4.).\... Щc...
0x0000000001C0AF5E  00 00 00 00 00 00 00 00 00 00 04 00 00 00  ..............
0x0000000001C0AF6C  00 00 00 00 00 00 63 03 00 00 00 00 00 00  ......c.......
Hope that will help. If you need some additional information, please let me know.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Ah, this makes sense, thanks! Counting was instantaneous on my system, probably because the files listed in your sample file do not exist. But even with the windows dir it was too fast to abort during the counting phase. I found out that TC is trying to delete the list of files twice (once the counting is aborted, and again when the delete function itself ends).
Author of Total Commander
https://www.ghisler.com
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

Nice to hear that you've found it!
User avatar
MVV
Power Member
Power Member
Posts: 8702
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

Works fine in both 32- and 64-bit TC 8.51 final. Thanks!
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 48088
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Thanks, also for your quick reply via e-mail!
Author of Total Commander
https://www.ghisler.com
Post Reply