[fpc-pascal] memory corruption
ik
idokan at gmail.com
Thu Jan 26 14:24:37 CET 2012
On Thu, Jan 26, 2012 at 09:10, Michael Müller <mueller_michael at alice-dsl.net
> wrote:
>
> Am 26.01.2012 um 03:50 schrieb ik:
>
> Hello,
>
> While testing my following code:
>
> https://github.com/ik5/redis_client.fpc/blob/master/tests/test_parser.lpr#L166
>
> When I'm executing the code on the second item (that is suppose to be null
> in the protocol -> '$-1#13#10'),
> the program crashes with the following message:
> *** glibc detected *** redis_client/tests/test_parser: malloc(): memory
> corruption (fast): 0x0000000000750d50 ***
>
> Using gdb to display the information seems that the following like:
>
> https://github.com/ik5/redis_client.fpc/blob/master/tests/test_parser.lpr#L85is the cause.
> It looks like accessing either tmps or ALine[j] is causing it.
>
>
> I would expect that already line 83 is the problem. You have to change the
> order of the statements otherwise you'll access a not existing element in
> ALine before checking if the index is already to big when j becomes >
> alength.
> So change
> while (ALine[j] <> #13) and (j <= alength) do
> into
> while (j <= alength) and (ALine[j] <> #13) do
>
> But this will only work if the compiler switch {$B-} (verbose version
> {$BOOLEVAL OFF}) is set which is the default in Delphi so I assume the same
> in FPC too.
> If you can't ensure that you should do it like this
> while (j <= alength) do
> if (ALine[j] <> #13) then
>
Thanks,
I used valgrind and discovered this:
==20532== at 0x458754:
RD_TYPES_TREDISMULTIBULKRETURNTYPE_$__INSERT$LONGINT$TREDISRETURNTYPE
(rd_types.pas:406)
It was off by one else where. Why does it take such time to effect the
executable ?
>
> Regards
>
> Michael
>
Ido
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20120126/a4148d92/attachment.html>
More information about the fpc-pascal
mailing list