[fpc-pascal] How to analyze a core dump?

Luca Olivetti luca at ventoso.org
Wed Jun 27 19:38:03 CEST 2007


En/na Luca Olivetti ha escrit:
> En/na Cesar Romero ha escrit:
>> Where S is initialized?
>> I only see L initialized.
>>
>> []s
>>
>>
>> Cesar Romero
>>>
>>> 442:  L:=length(s);
>>> 443:  if L<1 then exit;
>>> 444:  case s[1] of
>>>
>>> so I can't see how it could possibly be uninitialized.
> 
> nothwithstanding the fact that if length(s)<1 line 444 won't be 
> executed, so the "uninitialized" should be flagged in line 442, I know 
> that this chunk is inside
> 
> procedure TButlerPhone.Receive(s: string);
> 
> so s is a parameter.
> This procedure is called exclusively from
> 
> procedure TStatusThread.Receive;
> begin
>   FOwner.Receive(FData)
> end;
> 
> (FOwner is a TButlerPhone)
> 
> which in turn is called only here:
> 
>           FData:=copy(buffer,i+2,L-1);
>           if buffer[i+L+1]=checksum(FData) then
>           begin
>            if not terminated then synchronize(@Receive);
>           end else
> 

And another writeln confirms that L is 1 when valgrind complains, so the 
string is definitely initialized.

Bye
-- 
Luca



More information about the fpc-pascal mailing list