Recent

Author Topic: Building trunk with heaptrace shows leaks in compiler/tools.  (Read 1199 times)

TRon

  • Hero Member
  • *****
  • Posts: 1030
Building trunk with heaptrace shows leaks in compiler/tools.
« on: January 25, 2023, 11:49:08 am »
Hi,

Trying to build trunk from gitlab source by means of: "make DEBUG=1 OPT="-O- -glh -k--verbose=5"

That fails with:
Code: [Select]
/fpmake compile --localunitdir=.. --os=linux --cpu=x86_64 -o -gl -o -Ur -o -Xs -o -O2 -o -n -o -Cg -o -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -o -O- -o -glh -o -k--verbose=5 -o -dx86_64 -o -dDEBUG -o -dRELEASE --compiler=/media/ramdisk-8gb/repo/fpc/compiler/ppcx64 -bu -o -XX -o -CX
The installer encountered the following error:
Compiler returns invalid information, check if fpc -iV works
because:
Code: [Select]
./some/long/path/to/ppcx64

Heap dump by heaptrc unit of "/media/ramdisk-8gb/repo/fpc/compiler/ppcx64"
4153 memory blocks allocated : 468932/483944
4150 memory blocks freed     : 444112/459112
3 unfreed memory blocks : 24820
True heap size : 458752
True free heap : 433120
Should be : 433344
Call trace for block $00007F6400A487C0 size 57
  $0000000000422346  ReAllocMem,  line 352 of ../inc/heap.inc
  $0000000000410D79  $fpc_ansistr_setlength,  line 809 of ../inc/astrings.inc
  $000000000041042E  $fpc_shortstr_to_ansistr,  line 522 of ../inc/astrings.inc
  $00000000005C88F4  WriteHelpPages,  line 1056 of options.pas
  $00000000005D233A  read_arguments,  line 4616 of options.pas
  $000000000043D565  InitCompiler,  line 224 of compiler.pas
  $000000000043D6B5  Compile,  line 272 of compiler.pas
  $00000000004012EA  $main,  line 301 of pp.pas
  $0000000000431415  SysEntry_InitTLS,  line 342 of system.pp
  $0000000000431415  SysEntry_InitTLS,  line 342 of system.pp
Call trace for block $00007F6400A5CB50 size 24703
  $0000000000422102  Getmem,  line 286 of ../inc/heap.inc
  $000000000040F69E  NewAnsiString,  line 123 of ../inc/astrings.inc
  $0000000000410FE6  $fpc_ansistr_copy,  line 933 of ../inc/astrings.inc
  $000000000048CAB8  MsgReplace,  line 107 of cmsgs.pas
  $000000000048DC3B  Get,  line 458 of cmsgs.pas
  $0000000000448269  MessageStr,  line 780 of verbose.pas
  $00000000005C84B3  WriteHelpPages,  line 907 of options.pas
  $00000000005D233A  read_arguments,  line 4616 of options.pas
  $000000000043D565  InitCompiler,  line 224 of compiler.pas
  $000000000043D6B5  Compile,  line 272 of compiler.pas
  $00000000004012EA  $main,  line 301 of pp.pas
  $0000000000431415  SysEntry_InitTLS,  line 342 of system.pp
Call trace for block $00007F6400A30300 size 60
  $0000000000422102  Getmem,  line 286 of ../inc/heap.inc
  $000000000040F69E  NewAnsiString,  line 123 of ../inc/astrings.inc
  $0000000000410CC6  $fpc_ansistr_setlength,  line 793 of ../inc/astrings.inc
  $000000000041042E  $fpc_shortstr_to_ansistr,  line 522 of ../inc/astrings.inc
  $00000000005C8469  WriteHelpPages,  line 905 of options.pas
  $00000000005D233A  read_arguments,  line 4616 of options.pas
  $000000000043D565  InitCompiler,  line 224 of compiler.pas
  $000000000043D6B5  Compile,  line 272 of compiler.pas
  $00000000004012EA  $main,  line 301 of pp.pas
  $0000000000431415  SysEntry_InitTLS,  line 342 of system.pp

Which seems logical enough to me: compiler leaks memory and does not return the expected result from the compiler for makefile because of the heaptrace. Problem is, how do I build the whole zhazam with glh but exclude ppcx64 ?

And why are there memory-leaks all over (this is just a small example) ? doesn't anyone (CI/CD?) ever build with tracing on ?

edit: topic title change
« Last Edit: January 27, 2023, 09:23:03 am by TRon »

Thaddy

  • Hero Member
  • *****
  • Posts: 12973
Re: Building trunk failures.
« Reply #1 on: January 25, 2023, 12:10:07 pm »
And why are there memory-leaks all over (this is just a small example) ? doesn't anyone (CI/CD?) ever build with tracing on ?
Highly unlikely, those leaks. Can't reproduce with MY build script and trunk of today (linux and windows)
Try this instead: make OPT="-O- -glh -k--verbose=5 -dDEBUG"
About the -k option: are you indeed using an external linker (ld)? Otherwise that option is pointless when the internal linker is used.
I actually get compliments for being rude... (well, Dutch, but that is the same)

TRon

  • Hero Member
  • *****
  • Posts: 1030
Re: Building trunk failures.
« Reply #2 on: January 25, 2023, 12:14:07 pm »
Highly unlikely, those leaks. Can't reproduce with MY build script and trunk of today (linux and windows)
Build 20-25 minutes ago from gitlab with 322 bootstrap. And I can only go with what make tells me  :-X

Quote
Try this instead: make OPT="-O- -glh -k--verbose=5 -dDEBUG"
Will do that and report back.

Quote
About the -k option: are you indeed using an external linker (ld)? Otherwise that option is pointless when the internal linker is used.
That is exactly the point: to see if something else gets dragged in (see other thread). And yes, I am able to see (some) output from that option.

PS: sorry, I just see I forgot to copy-paste the all target. but that is/was besides the point.
« Last Edit: January 25, 2023, 12:29:18 pm by TRon »

TRon

  • Hero Member
  • *****
  • Posts: 1030
Re: Building trunk failures.
« Reply #3 on: January 25, 2023, 12:38:46 pm »
Code: [Select]
$ cd /media/ramdisk-8gb/
$ mkdir repo
$ cd repo
$ ls
$ git clone https://gitlab.com/freepascal.org/fpc/source.git fpc
Cloning into 'fpc'...
remote: Enumerating objects: 701112, done.
remote: Counting objects: 100% (91/91), done.
remote: Compressing objects: 100% (89/89), done.
remote: Total 701112 (delta 37), reused 5 (delta 2), pack-reused 701021
Receiving objects: 100% (701112/701112), 191.06 MiB | 6.05 MiB/s, done.
Resolving deltas: 100% (563786/563786), done.
Updating files: 100% (21055/21055), done.
$ cd fpc
$ git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean
$ git rev-parse HEAD
0907628b73ebee55fde0ea0670f43e5aa3ebd4df
$ make all OPT="-O- -glh -k--verbose=5 -dDEBUG"

and while the build is busy, the first output from -k

Code: [Select]
-- snip ---
make compiler
make[5]: Entering directory '/media/ramdisk-8gb/repo/fpc/compiler'
/usr/bin/mkdir -p x86_64/units/x86_64-linux
/usr/bin/mkdir -p x86_64/bin/x86_64-linux
/home/apps/fpc/3.2.2/bin/x86_64-linux/ppcx64 -Ur -Xs -O2 -n -Fux86_64 -Fusystems -Fu/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Fix86_64 -FEx86_64/bin/x86_64-linux -FUx86_64/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -dRELEASE -O- -glh -k--verbose=5 -dDEBUG -dx86_64 -dGDB -Fux86 -Fix86 -o/media/ramdisk-8gb/repo/fpc/compiler/ppc1 pp.pas
GNU ld (GNU Binutils for Debian) 2.40
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   elf_iamcu
   i386pep
   i386pe
opened script file /media/ramdisk-8gb/repo/fpc/compiler/link32110.res
using internal linker script:
==================================================
/* Script for -z combreloc -z separate-code */
/* Copyright (C) 2014-2023 Free Software Foundation, Inc.
   Copying and distribution of this script, with or without modification,
   are permitted in any medium without royalty provided the copyright
   notice and this notice are preserved.  */
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
      "elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib");
SECTIONS
{
  PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
  .interp         : { *(.interp) }
  .note.gnu.build-id  : { *(.note.gnu.build-id) }
  .hash           : { *(.hash) }
  .gnu.hash       : { *(.gnu.hash) }
  .dynsym         : { *(.dynsym) }
  .dynstr         : { *(.dynstr) }
  .gnu.version    : { *(.gnu.version) }
  .gnu.version_d  : { *(.gnu.version_d) }
  .gnu.version_r  : { *(.gnu.version_r) }
  .rela.dyn       :
    {
      *(.rela.init)
      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
      *(.rela.fini)
      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
      *(.rela.ctors)
      *(.rela.dtors)
      *(.rela.got)
      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
      *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*)
      *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*)
      *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*)
      *(.rela.ifunc)
    }
  .rela.plt       :
    {
      *(.rela.plt)
      PROVIDE_HIDDEN (__rela_iplt_start = .);
      *(.rela.iplt)
      PROVIDE_HIDDEN (__rela_iplt_end = .);
    }
  .relr.dyn : { *(.relr.dyn) }
  . = ALIGN(CONSTANT (MAXPAGESIZE));
  .init           :
  {
    KEEP (*(SORT_NONE(.init)))
  }
  .plt            : { *(.plt) *(.iplt) }
.plt.got        : { *(.plt.got) }
.plt.sec        : { *(.plt.sec) }
  .text           :
  {
    *(.text.unlikely .text.*_unlikely .text.unlikely.*)
    *(.text.exit .text.exit.*)
    *(.text.startup .text.startup.*)
    *(.text.hot .text.hot.*)
    *(SORT(.text.sorted.*))
    *(.text .stub .text.* .gnu.linkonce.t.*)
    /* .gnu.warning sections are handled specially by elf.em.  */
    *(.gnu.warning)
  }
  .fini           :
  {
    KEEP (*(SORT_NONE(.fini)))
  }
  PROVIDE (__etext = .);
  PROVIDE (_etext = .);
  PROVIDE (etext = .);
  . = ALIGN(CONSTANT (MAXPAGESIZE));
  /* Adjust the address for the rodata segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)));
  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
  .rodata1        : { *(.rodata1) }
  .eh_frame_hdr   : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) }
  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) }
  .sframe         : ONLY_IF_RO { *(.sframe) *(.sframe.*) }
  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
  .gnu_extab   : ONLY_IF_RO { *(.gnu_extab*) }
  /* These sections are generated by the Sun/Oracle C++ compiler.  */
  .exception_ranges   : ONLY_IF_RO { *(.exception_ranges*) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
  /* Exception handling  */
  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) }
  .sframe         : ONLY_IF_RW { *(.sframe) *(.sframe.*) }
  .gnu_extab      : ONLY_IF_RW { *(.gnu_extab) }
  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
  .exception_ranges   : ONLY_IF_RW { *(.exception_ranges*) }
  /* Thread Local Storage sections  */
  .tdata   :
   {
     PROVIDE_HIDDEN (__tdata_start = .);
     *(.tdata .tdata.* .gnu.linkonce.td.*)
   }
  .tbss   : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
  .preinit_array    :
  {
    PROVIDE_HIDDEN (__preinit_array_start = .);
    KEEP (*(.preinit_array))
    PROVIDE_HIDDEN (__preinit_array_end = .);
  }
  .init_array    :
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
    KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
    PROVIDE_HIDDEN (__init_array_end = .);
  }
  .fini_array    :
  {
    PROVIDE_HIDDEN (__fini_array_start = .);
    KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
    KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors))
    PROVIDE_HIDDEN (__fini_array_end = .);
  }
  .ctors          :
  {
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */
    KEEP (*crtbegin.o(.ctors))
    KEEP (*crtbegin?.o(.ctors))
    /* We don't want to include the .ctor section from
       the crtend.o file until after the sorted ctors.
       The .ctor section from the crtend file contains the
       end of ctors marker and it must be last */
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
  }
  .dtors          :
  {
    KEEP (*crtbegin.o(.dtors))
    KEEP (*crtbegin?.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
  }
  .jcr            : { KEEP (*(.jcr)) }
  .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) }
  .dynamic        : { *(.dynamic) }
  .got            : { *(.got) *(.igot) }
  . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .);
  .got.plt        : { *(.got.plt) *(.igot.plt) }
  .data           :
  {
    *(.data .data.* .gnu.linkonce.d.*)
    SORT(CONSTRUCTORS)
  }
  .data1          : { *(.data1) }
  _edata = .; PROVIDE (edata = .);
  . = .;
  __bss_start = .;
  .bss            :
  {
   *(.dynbss)
   *(.bss .bss.* .gnu.linkonce.b.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.
      FIXME: Why do we need it? When there is no .bss section, we do not
      pad the .data section.  */
   . = ALIGN(. != 0 ? 64 / 8 : 1);
  }
  .lbss   :
  {
    *(.dynlbss)
    *(.lbss .lbss.* .gnu.linkonce.lb.*)
    *(LARGE_COMMON)
  }
  . = ALIGN(64 / 8);
  . = SEGMENT_START("ldata-segment", .);
  .lrodata   ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
  {
    *(.lrodata .lrodata.* .gnu.linkonce.lr.*)
  }
  .ldata   ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
  {
    *(.ldata .ldata.* .gnu.linkonce.l.*)
    . = ALIGN(. != 0 ? 64 / 8 : 1);
  }
  . = ALIGN(64 / 8);
  _end = .; PROVIDE (end = .);
  . = DATA_SEGMENT_END (.);
  /* Stabs debugging sections.  */
  .stab          0 : { *(.stab) }
  .stabstr       0 : { *(.stabstr) }
  .stab.excl     0 : { *(.stab.excl) }
  .stab.exclstr  0 : { *(.stab.exclstr) }
  .stab.index    0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment       0 : { *(.comment) }
  .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
  /* DWARF 1.  */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions.  */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2.  */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2.  */
  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions.  */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }
  /* DWARF 3.  */
  .debug_pubtypes 0 : { *(.debug_pubtypes) }
  .debug_ranges   0 : { *(.debug_ranges) }
  /* DWARF 5.  */
  .debug_addr     0 : { *(.debug_addr) }
  .debug_line_str 0 : { *(.debug_line_str) }
  .debug_loclists 0 : { *(.debug_loclists) }
  .debug_macro    0 : { *(.debug_macro) }
  .debug_names    0 : { *(.debug_names) }
  .debug_rnglists 0 : { *(.debug_rnglists) }
  .debug_str_offsets 0 : { *(.debug_str_offsets) }
  .debug_sup      0 : { *(.debug_sup) }
  .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
  /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
}


==================================================
/usr/bin/ld: mode elf_x86_64
attempt to open /media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux/si_prc.o succeeded
/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux/si_prc.o
the first trace within 0.02 seconds (next post, as it will not fit otherwise)

TRon

  • Hero Member
  • *****
  • Posts: 1030
Re: Building trunk failures.
« Reply #4 on: January 25, 2023, 12:42:11 pm »
memory trace 1:
Code: [Select]
make -C linux all
make[7]: Entering directory '/media/ramdisk-8gb/repo/fpc/rtl/linux'
make /media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux
make[8]: Entering directory '/media/ramdisk-8gb/repo/fpc/rtl/linux'
make[8]: '/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux' is up to date.
make[8]: Leaving directory '/media/ramdisk-8gb/repo/fpc/rtl/linux'
as --64 -o /media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux/abitag.o x86_64/abitag.as
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE  -Us -Sg system.pp
Heap dump by heaptrc unit of "/media/ramdisk-8gb/repo/fpc/compiler/ppc1"
1648011 memory blocks allocated : 182326507/183514336
1647998 memory blocks freed     : 182324315/183512144
13 unfreed memory blocks : 2192
True heap size : 13762560
True free heap : 13757472
Should be : 13757872
Call trace for block $00007F6015397820 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $000000000056E7A8  CREATE,  line 614 of ncon.pas
  $000000000056D401  GENINTCONSTNODE,  line 246 of ncon.pas
  $00000000006204A5  STATEMENT_SYSSYM,  line 468 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AC09  SUB_EXPR,  line 4653 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C534  EXPR,  line 4924 of pexpr.pas
  $00000000006526B6  STATEMENT,  line 1441 of pstatmnt.pas
  $0000000000652BCC  STATEMENT_BLOCK,  line 1579 of pstatmnt.pas
  $0000000000652527  STATEMENT,  line 1389 of pstatmnt.pas
Call trace for block $00007F6014861C80 size 176
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $0000000000584863  CREATE,  line 180 of nadd.pas
  $000000000062AD52  SUB_EXPR,  line 4656 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C534  EXPR,  line 4924 of pexpr.pas
  $00000000006526B6  STATEMENT,  line 1441 of pstatmnt.pas
  $0000000000652BCC  STATEMENT_BLOCK,  line 1579 of pstatmnt.pas
  $0000000000652527  STATEMENT,  line 1389 of pstatmnt.pas
  $000000000064EF54  IF_STATEMENT,  line 74 of pstatmnt.pas
  $0000000000652535  STATEMENT,  line 1391 of pstatmnt.pas
  $000000000064EF77  IF_STATEMENT,  line 79 of pstatmnt.pas
  $0000000000652535  STATEMENT,  line 1391 of pstatmnt.pas
  $0000000000652B8E  STATEMENT_BLOCK,  line 1574 of pstatmnt.pas
  $0000000000652527  STATEMENT,  line 1389 of pstatmnt.pas
  $000000000064EF54  IF_STATEMENT,  line 74 of pstatmnt.pas
Call trace for block $00007F601539ADC0 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $000000000056E7A8  CREATE,  line 614 of ncon.pas
  $000000000056D831  GENCONSTSYMTREE,  line 333 of ncon.pas
  $0000000000627737  FACTOR_HANDLE_SYM,  line 3116 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C534  EXPR,  line 4924 of pexpr.pas
  $00000000006526B6  STATEMENT,  line 1441 of pstatmnt.pas
  $0000000000652BCC  STATEMENT_BLOCK,  line 1579 of pstatmnt.pas
  $0000000000652527  STATEMENT,  line 1389 of pstatmnt.pas
  $000000000064EF54  IF_STATEMENT,  line 74 of pstatmnt.pas
Call trace for block $00007F6014817680 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $000000000056E7A8  CREATE,  line 614 of ncon.pas
  $000000000056D831  GENCONSTSYMTREE,  line 333 of ncon.pas
  $0000000000627737  FACTOR_HANDLE_SYM,  line 3116 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AC09  SUB_EXPR,  line 4653 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C348  COMP_EXPR,  line 4881 of pexpr.pas
  $0000000000620C54  STATEMENT_SYSSYM,  line 700 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
Call trace for block $00007F601485E980 size 176
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $0000000000584863  CREATE,  line 180 of nadd.pas
  $000000000062AD52  SUB_EXPR,  line 4656 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C348  COMP_EXPR,  line 4881 of pexpr.pas
  $0000000000620C54  STATEMENT_SYSSYM,  line 700 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C3AF  EXPR,  line 4900 of pexpr.pas
  $00000000006526B6  STATEMENT,  line 1441 of pstatmnt.pas
Call trace for block $00007F6014817340 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $000000000056E7A8  CREATE,  line 614 of ncon.pas
  $000000000056D831  GENCONSTSYMTREE,  line 333 of ncon.pas
  $0000000000627737  FACTOR_HANDLE_SYM,  line 3116 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C348  COMP_EXPR,  line 4881 of pexpr.pas
  $0000000000620C54  STATEMENT_SYSSYM,  line 700 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
Call trace for block $00007F60153AD8C0 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $00000000004DDB88  CREATEFORCOPY,  line 767 of node.pas
  $00000000004DE70F  DOGETCOPY,  line 1016 of node.pas
  $000000000056EA19  DOGETCOPY,  line 662 of ncon.pas
  $00000000004DEC0C  DOGETCOPY,  line 1111 of node.pas
  $00000000004DF069  DOGETCOPY,  line 1212 of node.pas
  $000000000058C819  DOGETCOPY,  line 1940 of nadd.pas
  $00000000004DE691  GETCOPY,  line 1004 of node.pas
  $000000000058C17A  GETCOPYANDTYPECHECK,  line 493 of nadd.pas
  $000000000058C01E  SWAPRIGHTWITHLEFTRIGHT,  line 529 of nadd.pas
  $0000000000586620  SIMPLIFY,  line 867 of nadd.pas
  $00000000007149E4  SIMPLIFY,  line 1577 of x86/nx86add.pas
  $0000000000592101  PASS_TYPECHECK_INTERNAL,  line 3370 of nadd.pas
  $000000000058C8E6  PASS_TYPECHECK,  line 1960 of nadd.pas
  $0000000000559016  TYPECHECKPASS_INTERNAL_LOOP,  line 72 of pass_1.pas
Call trace for block $00007F6015370200 size 176
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $00000000004DDB88  CREATEFORCOPY,  line 767 of node.pas
  $00000000004DE70F  DOGETCOPY,  line 1016 of node.pas
  $00000000004DEBD9  DOGETCOPY,  line 1109 of node.pas
  $00000000004DF069  DOGETCOPY,  line 1212 of node.pas
  $000000000058C819  DOGETCOPY,  line 1940 of nadd.pas
  $00000000004DE691  GETCOPY,  line 1004 of node.pas
  $000000000058C17A  GETCOPYANDTYPECHECK,  line 493 of nadd.pas
  $000000000058C01E  SWAPRIGHTWITHLEFTRIGHT,  line 529 of nadd.pas
  $0000000000586620  SIMPLIFY,  line 867 of nadd.pas
  $00000000007149E4  SIMPLIFY,  line 1577 of x86/nx86add.pas
  $0000000000592101  PASS_TYPECHECK_INTERNAL,  line 3370 of nadd.pas
  $000000000058C8E6  PASS_TYPECHECK,  line 1960 of nadd.pas
  $0000000000559016  TYPECHECKPASS_INTERNAL_LOOP,  line 72 of pass_1.pas
  $000000000055914B  TYPECHECKPASS_INTERNAL,  line 110 of pass_1.pas
Call trace for block $00007F60153AD580 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $000000000056E7A8  CREATE,  line 614 of ncon.pas
  $0000000000628D83  FACTOR,  line 3982 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AC09  SUB_EXPR,  line 4653 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C348  COMP_EXPR,  line 4881 of pexpr.pas
  $0000000000620C54  STATEMENT_SYSSYM,  line 700 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
Call trace for block $00007F60153AD3E0 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $000000000056E7A8  CREATE,  line 614 of ncon.pas
  $0000000000628D83  FACTOR,  line 3982 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AC09  SUB_EXPR,  line 4653 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C348  COMP_EXPR,  line 4881 of pexpr.pas
  $0000000000620C54  STATEMENT_SYSSYM,  line 700 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
Call trace for block $00007F6015370500 size 176
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $0000000000584863  CREATE,  line 180 of nadd.pas
  $000000000062AD52  SUB_EXPR,  line 4656 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C348  COMP_EXPR,  line 4881 of pexpr.pas
  $0000000000620C54  STATEMENT_SYSSYM,  line 700 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C3AF  EXPR,  line 4900 of pexpr.pas
  $00000000006526B6  STATEMENT,  line 1441 of pstatmnt.pas
Call trace for block $00007F60153AD0A0 size 184
  $0000000000420A5E  GETMEM,  line 286 of ../inc/heap.inc
  $000000000041905D  NEWINSTANCE,  line 441 of ../inc/objpas.inc
  $000000000056E7A8  CREATE,  line 614 of ncon.pas
  $0000000000628D83  FACTOR,  line 3982 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062C348  COMP_EXPR,  line 4881 of pexpr.pas
  $0000000000620C54  STATEMENT_SYSSYM,  line 700 of pexpr.pas
  $00000000006274CE  FACTOR_HANDLE_SYM,  line 3052 of pexpr.pas
  $000000000062A96E  FACTOR_READ_ID,  line 3576 of pexpr.pas
  $0000000000627E2C  FACTOR,  line 3690 of pexpr.pas
  $000000000062AB07  SUB_EXPR,  line 4636 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
  $000000000062AB38  SUB_EXPR,  line 4641 of pexpr.pas
Call trace for block $00007F6016FD7760 size 16
  $0000000000420CDA  fpc_getmem,  line 364 of ../inc/heap.inc
  $000000000049C6FC  RECORDPENDINGMESSAGESTATE,  line 306 of switches.pas
  $0000000000442EF8  CHANGEMESSAGEVERBOSITY,  line 241 of verbose.pas
  $00000000006B75E6  DIR_WARN,  line 1767 of scandir.pas
  $000000000053C81B  HANDLEDIRECTIVES,  line 4155 of scanner.pas
  $000000000053D77C  SKIPCOMMENT,  line 4699 of scanner.pas
  $000000000053DBF9  READTOKEN,  line 4881 of scanner.pas
  $0000000000619144  CONSUME,  line 158 of pbase.pas
  $000000000063A594  TYPES_DEC,  line 1152 of pdecl.pas
  $000000000063AA51  TYPE_DEC,  line 1238 of pdecl.pas
  $00000000005E4BA2  READ_INTERFACE_DECLARATIONS,  line 3288 of psub.pas
  $00000000006C06B2  PROC_UNIT,  line 1041 of pmodules.pas
  $00000000005CB732  COMPILE, /media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../inc/fpintres.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE si_prc.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE si_c.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE si_g.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE si_dll.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../inc/uuchar.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../unix/unixtype.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../inc/ctypes.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../unix/baseunix.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../inc/strings.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE -I../objpas ../objpas/objpas.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../unix/syscall.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../unix/unixutil.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../unix/unix.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../unix/errors.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../objpas/sysconst.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE linux.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE ../unix/initc.pp
/media/ramdisk-8gb/repo/fpc/compiler/ppc1 -Ur -Ur -Xs -O2 -n -Fi../inc -Fi../x86_64 -Fi../unix -Fix86_64 -FE. -FU/media/ramdisk-8gb/repo/fpc/rtl/units/x86_64-linux -Cg -Fl/usr/lib/gcc/x86_64-linux-gnu/12 -O- -glh -k--verbose=5 -dDEBUG -DD2023/01/24 -dx86_64 -dRELEASE -Fi../objpas/sysutils ../unix/sysutils.pp
Heap dump by heaptrc unit of "/media/ramdisk-8gb/repo/fpc/compiler/ppc1"
2113213 memory blocks allocated : 294090663/295321832
2113213 memory blocks freed     : 294090663/295321832
0 unfreed memory blocks : 0
True heap size : 15826944
And before thisis going to give discussion: no I am not talking about the last lines. I know what 0 unfree blocks mean.

Same error, thus sorry to say that using -dDebug instead does not solve the issue.

Note: I can build trunk perfectly without using traces.

edit: 24 traces in total with unfreed memory blocks (I did not check for dups)
« Last Edit: January 25, 2023, 12:51:32 pm by TRon »

TRon

  • Hero Member
  • *****
  • Posts: 1030
Re: Building trunk failures.
« Reply #5 on: January 25, 2023, 01:01:58 pm »
trace list (sorry it will not fit in previous posts):
Code: [Select]
grep -i "unfreed memory" build.log
13 unfreed memory blocks : 2192
0 unfreed memory blocks : 0
1 unfreed memory blocks : 16
1 unfreed memory blocks : 184
1015 unfreed memory blocks : 143752
13 unfreed memory blocks : 2192
0 unfreed memory blocks : 0
1 unfreed memory blocks : 16
1 unfreed memory blocks : 184
1015 unfreed memory blocks : 143752
13 unfreed memory blocks : 2192
0 unfreed memory blocks : 0
1 unfreed memory blocks : 16
1 unfreed memory blocks : 184
1015 unfreed memory blocks : 143752
10 unfreed memory blocks : 1696
20 unfreed memory blocks : 965
2 unfreed memory blocks : 32
13 unfreed memory blocks : 2192
0 unfreed memory blocks : 0
1 unfreed memory blocks : 16
1 unfreed memory blocks : 184
1015 unfreed memory blocks : 143752
13 unfreed memory blocks : 2192
0 unfreed memory blocks : 0
1 unfreed memory blocks : 16
1 unfreed memory blocks : 184
1015 unfreed memory blocks : 143752
13 unfreed memory blocks : 2192
0 unfreed memory blocks : 0
1 unfreed memory blocks : 16
1 unfreed memory blocks : 184
3 unfreed memory blocks : 544
0 unfreed memory blocks : 0
20 unfreed memory blocks : 964

So, there you go !  :D

I wouldn't even have tried with trunk but since my script depends on ftp I got the sources from snapshot and those provided me these errors. But since source archive in snapshot is over a week old I can't rely on that.

It goes without mention that the same can be produced with make all OPT="-glh" (which builds a bit quicker :D )

trace results from build with OPT ='glh"
Code: [Select]
206 unfreed memory blocks : 36584
7 unfreed memory blocks : 1344
1 unfreed memory blocks : 120
30 unfreed memory blocks : 5240
61 unfreed memory blocks : 11568
5 unfreed memory blocks : 888
10 unfreed memory blocks : 1704
13 unfreed memory blocks : 2496
1 unfreed memory blocks : 120
4 unfreed memory blocks : 624
1 unfreed memory blocks : 16
16 unfreed memory blocks : 2784
27 unfreed memory blocks : 4968
1 unfreed memory blocks : 192
33 unfreed memory blocks : 5400
19 unfreed memory blocks : 3576
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1352 unfreed memory blocks : 176048
206 unfreed memory blocks : 36584
7 unfreed memory blocks : 1344
1 unfreed memory blocks : 120
30 unfreed memory blocks : 5240
61 unfreed memory blocks : 11568
5 unfreed memory blocks : 888
10 unfreed memory blocks : 1704
13 unfreed memory blocks : 2496
1 unfreed memory blocks : 120
4 unfreed memory blocks : 624
1 unfreed memory blocks : 16
16 unfreed memory blocks : 2784
27 unfreed memory blocks : 4968
1 unfreed memory blocks : 192
33 unfreed memory blocks : 5400
19 unfreed memory blocks : 3576
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1352 unfreed memory blocks : 176048
206 unfreed memory blocks : 36584
7 unfreed memory blocks : 1344
1 unfreed memory blocks : 120
30 unfreed memory blocks : 5240
61 unfreed memory blocks : 11568
5 unfreed memory blocks : 888
10 unfreed memory blocks : 1704
13 unfreed memory blocks : 2496
1 unfreed memory blocks : 120
4 unfreed memory blocks : 624
1 unfreed memory blocks : 16
16 unfreed memory blocks : 2784
27 unfreed memory blocks : 4968
1 unfreed memory blocks : 192
33 unfreed memory blocks : 5400
19 unfreed memory blocks : 3576
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1352 unfreed memory blocks : 176048
10 unfreed memory blocks : 1696
2 unfreed memory blocks : 384
30 unfreed memory blocks : 2813
1 unfreed memory blocks : 192
2 unfreed memory blocks : 32
206 unfreed memory blocks : 36584
7 unfreed memory blocks : 1344
1 unfreed memory blocks : 120
30 unfreed memory blocks : 5240
61 unfreed memory blocks : 11568
5 unfreed memory blocks : 888
10 unfreed memory blocks : 1704
13 unfreed memory blocks : 2496
1 unfreed memory blocks : 120
4 unfreed memory blocks : 624
1 unfreed memory blocks : 16
16 unfreed memory blocks : 2784
27 unfreed memory blocks : 4968
1 unfreed memory blocks : 192
33 unfreed memory blocks : 5400
19 unfreed memory blocks : 3576
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1352 unfreed memory blocks : 176048
206 unfreed memory blocks : 36584
7 unfreed memory blocks : 1344
1 unfreed memory blocks : 120
30 unfreed memory blocks : 5240
61 unfreed memory blocks : 11568
5 unfreed memory blocks : 888
10 unfreed memory blocks : 1704
13 unfreed memory blocks : 2496
1 unfreed memory blocks : 120
4 unfreed memory blocks : 624
1 unfreed memory blocks : 16
16 unfreed memory blocks : 2784
27 unfreed memory blocks : 4968
1 unfreed memory blocks : 192
33 unfreed memory blocks : 5400
19 unfreed memory blocks : 3576
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1352 unfreed memory blocks : 176048
206 unfreed memory blocks : 36584
7 unfreed memory blocks : 1344
1 unfreed memory blocks : 120
30 unfreed memory blocks : 5240
61 unfreed memory blocks : 11568
5 unfreed memory blocks : 888
10 unfreed memory blocks : 1704
13 unfreed memory blocks : 2496
1 unfreed memory blocks : 120
4 unfreed memory blocks : 624
1 unfreed memory blocks : 16
16 unfreed memory blocks : 2784
27 unfreed memory blocks : 4968
1 unfreed memory blocks : 192
33 unfreed memory blocks : 5400
19 unfreed memory blocks : 3576
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
1 unfreed memory blocks : 192
3 unfreed memory blocks : 544
0 unfreed memory blocks : 0
17 unfreed memory blocks : 890

« Last Edit: January 25, 2023, 01:48:25 pm by TRon »

Thaddy

  • Hero Member
  • *****
  • Posts: 12973
Re: Building trunk failures.
« Reply #6 on: January 25, 2023, 08:11:57 pm »
@TRon
Nothing of the kind here. Lazarus may not always play nice - depending on installed packages - but FPC itself has no leaks, nor has the rtl, nor has the fcl.
Note, just in case you misunderstood, I rarely use Lazarus and program from classes, not components.

(Anyway: let's get back to APL: any progress?)
« Last Edit: January 25, 2023, 08:16:02 pm by Thaddy »
I actually get compliments for being rude... (well, Dutch, but that is the same)

PascalDragon

  • Hero Member
  • *****
  • Posts: 5048
  • Compiler Developer
Re: Building trunk failures.
« Reply #7 on: January 25, 2023, 10:17:08 pm »
but FPC itself has no leaks, nor has the rtl, nor has the fcl.

This blanket statement is simply not true: The compiler, the RTL and the FCL can all three have leaks due to bugs. They should be reported with small examples that trigger the leak.

TRon

  • Hero Member
  • *****
  • Posts: 1030
Re: Building trunk failures.
« Reply #8 on: January 26, 2023, 12:01:03 pm »
Nothing of the kind here.  Lazarus may not always play nice - depending on installed packages - but FPC itself has no leaks, nor has the rtl, nor has the fcl.
Unlucky that you are unable to reproduce as I am able to do so on 3 different setups.

fwiw: I do not refer to Lazarus at all. I do hope my steps to reproduce showed that.

Quote
(Anyway: let's get back to APL: any progress?)
Working on it. It is deeply buried into the RTL (seems to fight what I am trying to accomplish). I was unable to find a single example of an application that catches its own output/eror/input using native (linux) calls (the available c++ stream examples do not help in that regard) ergo uncharted territory.
« Last Edit: January 26, 2023, 12:06:37 pm by TRon »

TRon

  • Hero Member
  • *****
  • Posts: 1030
Re: Building trunk failures.
« Reply #9 on: January 26, 2023, 12:05:33 pm »
This blanket statement is simply not true: The compiler, the RTL and the FCL can all three have leaks due to bugs. They should be reported with small examples that trigger the leak.
As shown below:

Code: [Select]
$ cd /media/[SOME-RAMDISK]/
$ mkdir repo
$ cd repo
$ ls
$ git clone https://gitlab.com/freepascal.org/fpc/source.git fpc
$ cd fpc
$ git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean
$ git rev-parse HEAD
e8fcc5343beea4180e7e1f83bef6e27e19dde242
$ fpc -iV
3.2.2
$ export HEAPTRC=skipifnoleaks
$ make all OPT="-glh" &> build.log

That will successfully build the FPC tree /with/ tracing enabled.

During build the traces indicate 6 problematic executables:
- fpc/compiler/ppc1
- fpc/compiler/ppc2
- fpc/compiler/ppcx64
- fpc/compiler/ppc3
- fpc/compiler/ppcwpo1
- fpc/utils/fpmake

Simply invoking those from a terminal (after the successful build) indicate they contain leaks. That is: /not/ even invoking any action by supplying parameters. The log shows that there are more problems when invoking those commands with a set of parameters. It would take time to investigate, unless the output from the build-log is enough.



Aside from the compiler the following utilities seem to behave problematic when invoked without any parameters:
- fpclasschart
- fpcmake
- fpdoc
- fppkg
- h2pas
- makeskell
- mka64ins
- mkarmins
- mkx86inl
- mkx86ins
- mkz80ins
- plex
- ptop
- pyacc
- unihelper
- webidlpas

As an example:

./fpclasschart
Code: [Select]
fpClassTree - Create class tree from pascal sources
Version 3.3.1 [2023/01/26]
(c) 2008 - Michael Van Canneyt, michael@freepascal.org
Usage : fpclasschart [options]
Where [options] is one or more of :
 --merge=filename    Filename with object tree to merge.
 --help              Emit help.
 --input=cmdline     Input file to create skeleton for.
                     Use options are as for compiler.
 --kind=objectkind   Specify object kind. One of object, class, interface.
 --lang=language     Use selected language.
 --output=filename   Send output to file.
 --format=name       Kind of output to create: XML, PostScript, GraphViz.
Heap dump by heaptrc unit of "/media/ramdisk-8gb/fpc-arch/bin/fpclasschart"
37 memory blocks allocated : 3360/3424
34 memory blocks freed     : 3029/3088
3 unfreed memory blocks : 331
True heap size : 425984
True free heap : 425024
Should be : 425072
Call trace for block $00007FE4B7B24260 size 144
Call trace for block $00007FE4B7B24100 size 144
Call trace for block $00007FE4B7B95300 size 43
« Last Edit: January 27, 2023, 10:41:37 am by TRon »

 

TinyPortal © 2005-2018