Note that there are some explanatory texts on larger screens.

plurals
  1. POWhat does "Invalid address specified to RtlFreeHeap( 06450000, 08387460 )" mean?
    primarykey
    data
    text
    <p>Sometimes I experience random crashes in my Delphi program. My program halts, and the Debugger outputs:</p> <p><strong>Invalid address specified to RtlFreeHeap( 06450000, 08387460 )</strong></p> <p>What does that mean? And what can possibly cause it?</p> <p>This is where the CPU Inspector stopped:</p> <p><strong>77BA0845 C6052582BD7700 mov byte ptr [$77bd8225],$00</strong></p> <p>Please note that they are very random (for me). Sometimes they don't appear at all.</p> <p>I am using the <strong>Skype4COM.dll</strong> from Skype - there's no source though.</p> <p>In case you need it, here is the code. I have commented most of the calls to Synchronize, so you know what they do.</p> <pre><code>//////////////////////////////////////////////////////////////////////////////// /// Execute //////////////////////////////////////////////////////////////////////////////// procedure TContactDeletor.Execute; Var I : Integer; UserObj : PUser; User : IUser; PauseEvent : TEvent; begin inherited; FreeOnTerminate := True; if Terminated then Exit; CoInitialize(Nil); // The F-Flags are to make sure TSkype events do not fire (from my Main Thread) FAllowUI := False; FUserIsBeingDeleted := False; FUseGroupUsersEvent := False; FUseRenameEvent := False; SkypeThr := TSkype.Create(Nil); SkypeThr.Attach(10,False); SkypeThr.Cache := False; MyList := TStringList.Create; PauseEvent := TEvent.Create(True); try // This fills my Stringlist Synchronize(GrabList); if Terminated then Exit; iMax := MyList.Count; // This sets the Max of my Progressbar Synchronize(SetMax); Try for I := 0 to MyList.Count - 1 do begin {while SkypeThr.AttachmentStatus &lt;&gt; apiAttachSuccess do begin SkypeThr.Attach(10,False); Synchronize(Procedure Begin Log('Skype Unavailable - Trying to reconnect ...'); End); PauseEvent.WaitFor(5000); end; } CurUser := ''; User := SkypeThr.User[MyList[I]]; CurUser := MyList[I]; Try User.IsAuthorized := False; User.BuddyStatus := budDeletedFriend; Except on E:Exception do begin ExErr := E.Message; ExLog := 'Error while deleting contacts: '; ExMsg := 'An Error has occured while deleting contacts: '; Synchronize( Procedure Begin Log(ExLog+ExErr+sLineBreak+' - Last logged Handle: '+CurUser); End ); end; end; iProgress := I+1; // This updates my log and my progressbar. Synchronize(UpdatePG); PauseEvent.WaitFor(100); if (I mod 200 = 0) and (I &gt; 0) then begin // Calls to Synchronize updates my log Synchronize(SyncPauseBegin); PauseEvent.WaitFor(3000); Synchronize(SyncPauseEnd); end; end; // Except Except on E:Exception do begin ExErr := E.Message; ExLog := 'Error while deleting contacts: '; ExMsg := 'An Error has occured while deleting contacts: '; Synchronize( Procedure Begin Log(ExMsg+ExErr+sLineBreak+' - Last logged Handle: '+CurUser); ErrMsg(ExMsg+ExErr+sLineBreak+sLineBreak+' - Last logged Handle: '+CurUser); End ); Exit; end; end; // This synchronizes my visual list. Synchronize(SyncList); finally FUserIsBeingDeleted := False; FUseGroupUsersEvent := True; FUseRenameEvent := True; FAllowUI := True; Synchronize( Procedure Begin frmMain.UpdateStatusBar; PleaseWait(False); ToggleUI(True); end); PauseEvent.Free; SkypeThr.Free; MyList.Free; CoUninitialize; end; end; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload