Re: Invalid read of size 1

Derrick McKee <[email protected]>
Newsgroups gmane.comp.debugging.valgrind
Message-ID <CAJoBWHzQ-_+YhHMFBVRQwPqJdUzBDpz9A+mV8wnW1nEixZ9uEw@mail.gmail.com>
It looks like you're using a pointer that has been freed some time earlier.

On Sun, Jun 7, 2020, 10:52 James Read <[email protected]> wrote:

> I'm getting a series of Invalid read of size 1 errors. These seem to be
> related to strlen() calls. How is it possible for strlen() to make an
> invalid read?
>
> Here is my valgrind output:
>
> ==21737== Invalid read of size 1
> ==21737==    at 0x483EF46: strlen (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10D7E6: crawler_init (crawler.c:1165)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Address 0x7adf2c0 is 0 bytes inside a block of size 52 free'd
> ==21737==    at 0x483CA3F: free (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10CC43: new_head_conn (crawler.c:911)
> ==21737==    by 0x10D751: crawler_init (crawler.c:1148)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Block was alloc'd at
> ==21737==    at 0x483B7F3: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x50DD50E: strdup (strdup.c:42)
> ==21737==    by 0x10D70C: crawler_init (crawler.c:1145)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==
> ==21737== Invalid read of size 1
> ==21737==    at 0x483EF54: strlen (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10D7E6: crawler_init (crawler.c:1165)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Address 0x7adf2c1 is 1 bytes inside a block of size 52 free'd
> ==21737==    at 0x483CA3F: free (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10CC43: new_head_conn (crawler.c:911)
> ==21737==    by 0x10D751: crawler_init (crawler.c:1148)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Block was alloc'd at
> ==21737==    at 0x483B7F3: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x50DD50E: strdup (strdup.c:42)
> ==21737==    by 0x10D70C: crawler_init (crawler.c:1145)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==
> ==21737== Invalid read of size 1
> ==21737==    at 0x483EF46: strlen (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10D89B: crawler_init (crawler.c:1166)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Address 0x7adf2c0 is 0 bytes inside a block of size 52 free'd
> ==21737==    at 0x483CA3F: free (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10CC43: new_head_conn (crawler.c:911)
> ==21737==    by 0x10D751: crawler_init (crawler.c:1148)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Block was alloc'd at
> ==21737==    at 0x483B7F3: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x50DD50E: strdup (strdup.c:42)
> ==21737==    by 0x10D70C: crawler_init (crawler.c:1145)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==
> ==21737== Invalid read of size 1
> ==21737==    at 0x483EF54: strlen (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10D89B: crawler_init (crawler.c:1166)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Address 0x7adf2c1 is 1 bytes inside a block of size 52 free'd
> ==21737==    at 0x483CA3F: free (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10CC43: new_head_conn (crawler.c:911)
> ==21737==    by 0x10D751: crawler_init (crawler.c:1148)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Block was alloc'd at
> ==21737==    at 0x483B7F3: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x50DD50E: strdup (strdup.c:42)
> ==21737==    by 0x10D70C: crawler_init (crawler.c:1145)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==
> ==21737== Invalid read of size 1
> ==21737==    at 0x4993BFD: ??? (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49D0D82: ??? (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49759AF: mysql_real_escape_string_quote (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49759DB: mysql_real_escape_string (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x10D8BB: crawler_init (crawler.c:1166)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Address 0x7adf2c0 is 0 bytes inside a block of size 52 free'd
> ==21737==    at 0x483CA3F: free (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10CC43: new_head_conn (crawler.c:911)
> ==21737==    by 0x10D751: crawler_init (crawler.c:1148)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Block was alloc'd at
> ==21737==    at 0x483B7F3: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x50DD50E: strdup (strdup.c:42)
> ==21737==    by 0x10D70C: crawler_init (crawler.c:1145)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==
> ==21737== Invalid read of size 1
> ==21737==    at 0x499D751: ??? (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49D0D98: ??? (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49759AF: mysql_real_escape_string_quote (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49759DB: mysql_real_escape_string (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x10D8BB: crawler_init (crawler.c:1166)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Address 0x7adf2c0 is 0 bytes inside a block of size 52 free'd
> ==21737==    at 0x483CA3F: free (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10CC43: new_head_conn (crawler.c:911)
> ==21737==    by 0x10D751: crawler_init (crawler.c:1148)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Block was alloc'd at
> ==21737==    at 0x483B7F3: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x50DD50E: strdup (strdup.c:42)
> ==21737==    by 0x10D70C: crawler_init (crawler.c:1145)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==
> ==21737== Invalid read of size 1
> ==21737==    at 0x49D0DCB: ??? (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49759AF: mysql_real_escape_string_quote (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x49759DB: mysql_real_escape_string (in
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.1.20)
> ==21737==    by 0x10D8BB: crawler_init (crawler.c:1166)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Address 0x7adf2c0 is 0 bytes inside a block of size 52 free'd
> ==21737==    at 0x483CA3F: free (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x10CC43: new_head_conn (crawler.c:911)
> ==21737==    by 0x10D751: crawler_init (crawler.c:1148)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==  Block was alloc'd at
> ==21737==    at 0x483B7F3: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==21737==    by 0x50DD50E: strdup (strdup.c:42)
> ==21737==    by 0x10D70C: crawler_init (crawler.c:1145)
> ==21737==    by 0x10E417: main (crawler.c:1383)
> ==21737==
>
> Source code for my app is available at
> https://github.com/JamesRead5737/webcrawler
>
> Thanks,
> James Read
> _______________________________________________
> Valgrind-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/valgrind-users
>

_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.