Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#3

AW: EAccessViolation führt zu unerwartetem APPCRASH

  Alt 23. Mai 2018, 07:45
Update:

Am Break liegt es nicht, mit diesem Code ergibt sich beim Stoppen des Servers ebenfalls ein APPCRASH:

Delphi-Quellcode:
procedure TProducerLoop.Run;
begin
  while True do
  begin
    Connect;

    while IsConnected do
    begin
      try
        ProduceOneMessage;
      except
        on E: Exception do
        begin
          IsConnected := False; // ---------------- Die innere Schleife soll bei einer Exception verlassen (stattdessen APPCRASH)
        end;
      end;
    end;

    Disconnect;
  end;
end;
Im Stacktrace erscheint die Zeile 111 aus der ProducerLoop unit, dies ist die Zeile in der das IsConnected := False steht mit dem die innere Schleife verlassen wird.

Code:
exception class  : EAccessViolation
exception message : Access violation at address 00404A74 in module 'Producer.exe'. Read of address 00000000.

main thread ($b50):
00404a74 +170 Producer.exe  System                 72  +0 @HandleOnException
00404b5e +02a Producer.exe  System                 72  +0 @HandleFinallyInternal
77e83835 +0f4 ntdll.dll                                    RtlUnwind
77e4ed27 +063 ntdll.dll                                    bsearch
77e3015e +00a ntdll.dll                                    KiUserExceptionDispatcher
0045b0cf +033 Producer.exe  SysUtils                      AppendChars
7584c538 +041 KERNELBASE.dll                               RaiseException
0040461a +002 Producer.exe  System                 72  +0 @ClassDestroy
0045d528 +03c Producer.exe  SysUtils                      Exception.Destroy
00404198 +008 Producer.exe  System                 72  +0 TObject.Free
004531c9 +009 Producer.exe  madExcept                     InterceptFreeExceptObject
00404d0a +016 Producer.exe  System                 72  +0 @DoneExcept
00482ece +04e Producer.exe  ProducerLoop          111 +12 TProducerLoop.Run
77e3015e +00a ntdll.dll                                    KiUserExceptionDispatcher
77e4ed27 +063 ntdll.dll                                    bsearch
7584c538 +041 KERNELBASE.dll                               RaiseException
77e3015e +00a ntdll.dll                                    KiUserExceptionDispatcher
7584c538 +041 KERNELBASE.dll                               RaiseException
00491dee +016 Producer.exe  IdStack               894  +1 TIdStack.RaiseLastSocketError
00491d59 +015 Producer.exe  IdStack               868  +2 TIdStack.CheckForSocketError
0048df39 +025 Producer.exe  IdStackBSDBase        444  +1 TIdStackBSDBase.Receive
0049320e +012 Producer.exe  IdSocketHandle        321  +1 TIdSocketHandle.Receive
0049d843 +02b Producer.exe  IdIOHandlerStack      431  +2 TIdIOHandlerStack.ReadDataFromSource
00497142 +0e2 Producer.exe  IdIOHandler          1698 +28 TIdIOHandler.ReadFromSource
0049d367 +00b Producer.exe  IdIOHandlerStack      243  +1 TIdIOHandlerStack.Connected
0049736b +017 Producer.exe  IdIOHandler          1775  +8 TIdIOHandler.CheckForDataOnSource
0049ed86 +04e Producer.exe  BTCommAdapterBaseIndy 421  +6 TBTCommAdapterBaseIndy.ConsumeHeartBeats
0049ef19 +055 Producer.exe  BTCommAdapterBaseIndy 516  +6 TBTCommAdapterBaseIndy.ReadStompHeader
0049f636 +02a Producer.exe  BTCommAdapterIndy      66  +1 TBTCommAdapterIndy.ReadFrame
0049f199 +055 Producer.exe  BTCommAdapterBaseIndy 574  +5 TBTCommAdapterBaseIndy.ReadOneMessage
00477dce +066 Producer.exe  BTStompClient        1232  +6 TBTStompClient.WaitForReceiptFrame
00475ca0 +140 Producer.exe  BTStompClient         681 +22 TBTStompClient.Send
0047a426 +09e Producer.exe  BTAbstractTransport   191 +12 TBTAbstractTransport.InternalSend
0047a6b1 +029 Producer.exe  BTAbstractTransport   242  +3 TBTAbstractTransport.Send
004813fa +126 Producer.exe  BTConnection         1460 +40 TBTSession.Send
0047f4bc +0bc Producer.exe  BTMessageProducer     251 +27 TBTMessageProducer.Send
0047f38b +027 Producer.exe  BTMessageProducer     209  +1 TBTMessageProducer.Send
0047ba1a +022 Producer.exe  BTMQProducer          160  +2 TBTMQProducer.InternalSend
0047b8be +03e Producer.exe  BTMQProducer          125  +3 TBTMQProducer.Send
00482f72 +086 Producer.exe  ProducerLoop          128  +5 TProducerLoop.ProduceOneMessage
00482ea5 +025 Producer.exe  ProducerLoop          107  +8 TProducerLoop.Run
004831f7 +033 Producer.exe  ProducerUnit           38  +5 RunDemo
004a0754 +020 Producer.exe  Producer               15  +3 initialization
7574343b +010 kernel32.dll                                 BaseThreadInitThunk
Michael Justin
  Mit Zitat antworten Zitat