Login  
Search All Forums
Dart Home | PowerTCP Winsock for ActiveX | Custom Development Reply | PowerTCP Winsock for ActiveX Topics | Forums   
AuthorForum: PowerTCP Winsock for ActiveX
Topic: User breakpoint called and Heap modification after the memory was released
Van^

From: Blacksburg, VA USA
Posts: 17
Member Since: 09/04/03
posted February 4, 2004 6:37 PM

I have quite a complicated setup, but I wanted to bring this to your attention.

First, I have a wrapper class written in VB that contains a dynamically created TCP object. These classes get instantiated many times during the lifteime of the application. We have several that connect to main servers, and others that provide dynamic peer to peer connections.

Recently, I've discovered some mysterious lockups and application hangs (100% cpu usage) while moving large amounts of data peer to peer. While these streams are running, the data seems to be getting there fine until it locks up. So, I proceeded to examine my parsing/buffering system to see if that was the culprit. While running the com dll in C++ debug mode, I noticed the following happening when a TCP object is terminated:

A user breakpoint msg box will appear, stopping execution.

The dissassembly where it stops is the following:

77FA142B  mov     dword ptr fs:[0],ecx
77FA1432  pop     edi
77FA1433  pop     esi
77FA1434  pop     ebx
77FA1435  leave
77FA1436  ret     10h
77FA1439  cmp     dword ptr [ebp-24h],0
77FA143D  je     77FA1447
77FA143F  push    dword ptr [ebp-24h]
77FA1442  call    77F8B5DF
77FA1447  ret
77FA1448  ret     4
77FA144B  int     3

It stops on 77FA144B. I gave you a good portion of the previous code in case you needed it. The call stack is as follows:

NTDLL! 77fa144b()
NTDLL! 77fced1b()
NTDLL! 77f8fcc4()
NTDLL! 77fb5e99()
NTDLL! 77fa81a8()
NTDLL! 77fcbd1c()
DARTSOCK! 064c6862()
DARTSOCK! 064b2470()
MSVBVM60! 6aac8204()
clsPortInterface::Class_Terminate() line 79 + 34

The line in clsPortInterface::Class_Terminate is:
Set oTCP = Nothing

where oTCP is declared as:
Private WithEvents oTCP As DartSock.Tcp

It is instantiated in the Class_Initialize event.

On top of that, the following is in the debug log of Visual C++:

First-chance exception in <app name>.exe (KERNEL32.DLL): 0xC000008F: Float Inexact Result.
Loaded 'C:\WINNT\system32\msacm32.drv', no matching symbolic information found.
Loaded 'C:\WINNT\system32\msacm32.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\vct3216.acm', no matching symbolic information found.
HEAP[iSpQVideoChat62d.exe]: HEAP: Free Heap block 64fead8 modified at 64feb40 after it was freed


I'm wondering if this could be related to the bizarre lockups I am experiencing, as well as the Float Inexact Result errors that are being recorded in the debug log of Visual C++ when the application is run through it.

Thanks for your help,
-Dave
Tony Priest



From: Utica, NY USA
Posts: 8466
Member Since: 04/11/00
posted February 4, 2004 10:56 PM

I know that we fixed the Debug breakpoint issue, but I am not sure about the other problems you are having.

What I would like to do is give you the latest DLL so that you can run some more tests.

Unfortunately I can't locate you in our database based on the email you registered with on the forum. Please contact sales@dart.com and provide your details (name, addr, phone, serial #, place of purchase) and once they get you in the system I will send the DLLs out.

Van^

From: Blacksburg, VA USA
Posts: 17
Member Since: 09/04/03
posted February 5, 2004 10:28 AM

Hi Tony,

I sent in the requested information just now. Hope to hear from you soon.

--Dave
Van^

From: Blacksburg, VA USA
Posts: 17
Member Since: 09/04/03
posted February 5, 2004 10:50 AM

Okay, just tested out the new build. It didn't throw a user breakpoint as consistently as it did before, but it now does it sometimes when the references is created, ie. Set oTCP = New DartSock.TCP. It also breakpoints at termination as well.

I might suggest that this is due to the heap modification error. I had this happen to one of my controls and it was due to a new operation on a buffer of size 0 and then a deletion after that. A default buffer size wasn't being set correctly.

If you would like, feel free to call me and we can discuss the issue.

-- Dave
Tony Priest



From: Utica, NY USA
Posts: 8466
Member Since: 04/11/00
posted February 5, 2004 10:53 AM

I'll send you an email. Since we are discussing beta builds, I would prefer to do this off the forum.
Reply | PowerTCP Winsock for ActiveX Topics | Forums   
This site is powered by PowerTCP WebServer Tool PowerTCP WebServer for ActiveX