Skip to content

flex-2.6.4: segfault during build on Linux #265

@triaxx

Description

@triaxx

When I compile flex on ArchLinux:
./configure
make
I get the following warnings:
misc.c: In function 'allocate_array':
misc.c:148:8: warning: implicit declaration of function 'reallocarray'; did you mean 'reallocate_array'? [-Wimplicit-function-declaration]
mem = reallocarray(NULL, (size_t) size, element_size);
^~~~~~~~~~~~
reallocate_array
misc.c:148:6: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
mem = reallocarray(NULL, (size_t) size, element_size);
^
misc.c: In function 'reallocate_array':
misc.c:666:12: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
new_array = reallocarray(array, (size_t) size, element_size);

The real problem is the following Segmentation fault:
./stage1flex -o stage1scan.c ./scan.l
make[2]: *** [Makefile:1696: stage1scan.c] Segmentation fault (core dumped)

The backtrace is:
Program received signal SIGSEGV, Segmentation fault.
flexinit (argc=4, argv=0x7fffffffe6e8) at main.c:977
977 action_array[0] = '\0';
(gdb) bt
#0 flexinit (argc=4, argv=0x7fffffffe6e8) at main.c:977
#1 0x000055555558337f in flex_main (argc=4, argv=0x7fffffffe6e8) at main.c:168
#2 0x00007ffff76f5f6a in __libc_start_main () from /usr/lib/libc.so.6
#3 0x000055555556e4fa in _start ()
(gdb) print action_array
$1 = 0x557c52c0 <error: Cannot access memory at address 0x557c52c0>
After testing code, the problem comes from reallocarray().

I tried the following test program:
#include <stdlib.h>

int main(int argc, char **argv)
{
char *foo;
foo = reallocarray(NULL, (size_t) 2048, 1);
foo[0] = '\0';
return 0;
}
and it produces the same behavior.

After reading manuals, I resolve the problem (for my test program) adding -D_GNU_SOURCE to CFLAGS.

flex-2.6.4 has been packaged for Arch and I seen no patch about reallocarray(). I appears as a mystery for me...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions