[Debian-med-packaging] Bug#909120: camitk FTBFS: tests segfault (Bug #909120)

Andreas Tille andreas at an3as.eu
Thu Sep 20 19:59:02 BST 2018


Control: tags -1 upstream

Hi Bernhard,

thanks a lot for your investigation.  Emmanuel Promayon is Uploader and
Upstream and I think he will come back to you and hopefully will
implement the fix soon.

Kind regards

       Andreas.

On Thu, Sep 20, 2018 at 06:01:38PM +0200, Bernhard Übelacker wrote:
> Hello all,
> I tried to reproduce this issue.
> 
> Unfortunately I never get the "(SEGFAULT)" output for all tests,
> just "(Failed)" for most. But some do really segfault in my amd64 VM.
> 
> I think the segfaults are caused by the line "delete component;", that
> invalidates the iterator by removing its element from the components vector.
> 
> For some reason the iterator contains still the previous pointer
> and therefore we try to delete the same pointer twice.
> 
> 
> Attached patch tries to change the loop assuming that the
> deleted element will always be removed inside the delete operation.
> 
> With that patch I do not get any segfault, but still tests
> fail for some reason.
> 
> 
> Kind regards,
> Bernhard
> 
> 
> 
> 
> # Here we crash:
> 
> (gdb) bt
> #0  0x0000000000000061 in ?? ()
> #1  0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> #2  0x00007fffeb32c11f in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:41
> #3  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #4  0x00007fffeb32ce3a in PhysicalModel::clear (this=this at entry=0x555555705ef0) at ./modeling/libraries/pml/PhysicalModel.cpp:99
> #5  0x00007fffeb32cf17 in PhysicalModel::~PhysicalModel (this=0x555555705ef0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:68
> #6  0x00007fffeb32cf59 in PhysicalModel::~PhysicalModel (this=0x555555705ef0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:67
> #7  0x00007fffeb317a3d in PMLComponent::~PMLComponent (this=0x555555660a00, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:96
> #8  0x00007fffeb3185a9 in PMLComponent::~PMLComponent (this=0x555555660a00, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:93
> #9  0x00007ffff7ec4ad7 in camitk::Application::close(camitk::Component*) () at ./sdk/libraries/core/application/Application.cpp:623
> #10 0x000055555555bc5c in main () at ./sdk/applications/testcomponents/main.cpp:204
> #11 0x00007ffff6e99b17 in __libc_start_main (main=0x55555555b080 <main>, argc=9, argv=0x7fffffffe398, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe388) at ../csu/libc-start.c:310
> #12 0x000055555555c35a in _start () at ./sdk/applications/testcomponents/main.cpp:136
> 
> (gdb) list -
> 46
> 47      // ------------------ deleteAllSubComponents ---------------------
> 48      void MultiComponent::deleteAllSubComponents() {
> 49          for (auto& component : components) {
> 50              delete component;
> 51          }
> 52          components.clear();
> 53      }
> 
> 
> 
> 
> # Here the pointer being deleted is removed from the components vector
> # and that way invalidating the iterator.
> 
> (gdb) bt
> #0  MultiComponent::removeSubComponent (c=0x5555579d70f0, this=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.h:134
> #1  Component::removeFromParents() () at ./modeling/libraries/pml/Component.cpp:60
> #2  0x00007fffeb32c127 in MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:44
> #3  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #4  0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> #5  0x00007fffeb32c11f in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:41
> #6  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #7  0x00007fffeb32ce3a in PhysicalModel::clear (this=this at entry=0x555555705ef0) at ./modeling/libraries/pml/PhysicalModel.cpp:99
> ...
> 
> (gdb) list modeling/libraries/pml/MultiComponent.h:134
> 129     }
> 130     inline void MultiComponent::removeSubComponent(Component* c) {
> 131         auto it = std::find(components.begin(), components.end(), c);
> 132         if (it != components.end()) {
> 133             components.erase(it);
> 134             c->removeParentMultiComponent(this);
> 135         }
> 136     }

> From 52f172e553ebddf068b8e35601da5eefd295cf3d Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= <bernhardu at mailbox.org>
> Date: Thu, 20 Sep 2018 17:42:14 +0200
> Subject: [PATCH] Make loop safe for removal of elements.
> 
> Bug-Debian: https://bugs.debian.org/909120
> Forwarded: no
> Last-Update: 2018-09-20
> 
> ---
>  modeling/libraries/pml/MultiComponent.cpp | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/modeling/libraries/pml/MultiComponent.cpp b/modeling/libraries/pml/MultiComponent.cpp
> index 5a3a9ab..3f32d7b 100644
> --- a/modeling/libraries/pml/MultiComponent.cpp
> +++ b/modeling/libraries/pml/MultiComponent.cpp
> @@ -46,8 +46,10 @@ MultiComponent::~MultiComponent() {
>  
>  // ------------------ deleteAllSubComponents ---------------------
>  void MultiComponent::deleteAllSubComponents() {
> -    for (auto& component : components) {
> -        delete component;
> +    auto component = components.begin();
> +    while (component != components.end()) {
> +        delete *component;
> +        component = components.begin();
>      }
>      components.clear();
>  }
> -- 
> 2.18.0
> 

> 
> apt build-dep camitk
> apt install mc systemd-coredump fakeroot gdb valgrind git
> 
> mkdir camitk/orig -p
> cd    camitk/orig
> apt source camitk
> cd ../..
> 
> 
> cd camitk
> cp -a orig try1
> cd try1/camitk-4.1.2
> dpkg-buildpackage
> 
> 
> 
> 
> 
> 
> [Do Sep 20 14:40:07 2018] camitk-testcomp[13880]: segfault at 61 ip 0000000000000061 sp 00007ffd2faf02b8 error 14 in camitk-testcomponents[5558b0632000+6000]
> [Do Sep 20 14:40:07 2018] Code: Bad RIP value.
> [Do Sep 20 14:40:13 2018] camitk-pmltest[14203]: segfault at 61 ip 0000000000000061 sp 00007ffc12fe0378 error 14 in camitk-pmltest[5646aa3bd000+32000]
> [Do Sep 20 14:40:13 2018] Code: Bad RIP value.
> [Do Sep 20 14:40:13 2018] camitk-pmltest[14209]: segfault at 60 ip 0000000000000060 sp 00007fff1e99c318 error 14 in camitk-pmltest[5555ba7f8000+32000]
> [Do Sep 20 14:40:13 2018] Code: Bad RIP value.
> [Do Sep 20 15:00:33 2018] camitk-testcomp[6725]: segfault at 61 ip 0000000000000061 sp 00007ffec31045f8 error 14 in camitk-testcomponents[55918d497000+6000]
> [Do Sep 20 15:00:33 2018] Code: Bad RIP value.
> [Do Sep 20 15:00:35 2018] camitk-pmltest[6962]: segfault at 61 ip 0000000000000061 sp 00007ffce42fdcf8 error 14 in camitk-pmltest[55c3677ad000+32000]
> [Do Sep 20 15:00:35 2018] Code: Bad RIP value.
> [Do Sep 20 15:00:35 2018] camitk-pmltest[6968]: segfault at 60 ip 0000000000000060 sp 00007ffc63c40758 error 14 in camitk-pmltest[56436f528000+32000]
> [Do Sep 20 15:00:35 2018] Code: Bad RIP value.
> 
> root at debian:~# coredumpctl list
> TIME                            PID   UID   GID SIG COREFILE  EXE
> Thu 2018-09-20 14:40:08 CEST  13880  1000  1000  11 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents
> Thu 2018-09-20 14:40:14 CEST  14203  1000  1000  11 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-pmltest
> Thu 2018-09-20 14:40:14 CEST  14209  1000  1000  11 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-pmltest
> -- Thu 2018-09-20 14:41:32 CEST  18340  1000  1000   6 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testloggercrash
> Thu 2018-09-20 15:00:34 CEST   6725  1000  1000  11 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents
> Thu 2018-09-20 15:00:36 CEST   6962  1000  1000  11 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-pmltest
> Thu 2018-09-20 15:00:36 CEST   6968  1000  1000  11 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-pmltest
> -- Thu 2018-09-20 15:00:50 CEST   9671  1000  1000   6 present   /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testloggercrash
> 
> 
> 
> directory /home/benutzer/camitk/try1/camitk-4.1.2
> set height 0
> set width 0
> set pagination off
> b MultiComponent::deleteAllSubComponents
> 
> coredumpctl gdb 13880
> Core was generated by `/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> (gdb) bt
> #0  0x0000000000000061 in ?? ()
> #1  0x00007f43f27340d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x5558b3645390) at ./modeling/libraries/pml/MultiComponent.cpp:50
> #2  0x00007f43f273411f in MultiComponent::~MultiComponent (this=0x5558b3645390, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:41
> #3  0x00007f43f2734149 in MultiComponent::~MultiComponent (this=0x5558b3645390, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #4  0x00007f43f2734e3a in PhysicalModel::clear (this=this at entry=0x5558b1eae860) at ./modeling/libraries/pml/PhysicalModel.cpp:99
> #5  0x00007f43f2734f17 in PhysicalModel::~PhysicalModel (this=0x5558b1eae860, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:68
> #6  0x00007f43f2734f59 in PhysicalModel::~PhysicalModel (this=0x5558b1eae860, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:67
> #7  0x00007f43f271fa3d in PMLComponent::~PMLComponent (this=0x5558b1eaf460, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:96
> #8  0x00007f43f27205a9 in PMLComponent::~PMLComponent (this=0x5558b1eaf460, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:93
> #9  0x00007f43ff2ccad7 in camitk::Application::close(camitk::Component*) () at ./sdk/libraries/core/application/Application.cpp:623
> #10 0x00005558b0639c5c in main () at ./sdk/applications/testcomponents/main.cpp:204
> #11 0x00007f43fe2a1b17 in __libc_start_main (main=0x5558b0639080 <main>, argc=9, argv=0x7ffd2faf0718, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffd2faf0708) at ../csu/libc-start.c:310
> #12 0x00005558b063a35a in _start () at ./sdk/applications/testcomponents/main.cpp:136
> 
> (gdb) print argv[0]
> $4 = 0x7ffd2faf2902 "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents"
> (gdb) print argv[1]
> $5 = 0x7ffd2faf2951 "-i"
> (gdb) print argv[2]
> $6 = 0x7ffd2faf2954 "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml"
> (gdb) print argv[3]
> $7 = 0x7ffd2faf29b1 "-c"
> (gdb) print argv[4]
> $8 = 0x7ffd2faf29b4 "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so"
> (gdb) print argv[5]
> $9 = 0x7ffd2faf2a16 "-l"
> (gdb) print argv[6]
> $10 = 0x7ffd2faf2a19 "2"
> (gdb) print argv[7]
> $11 = 0x7ffd2faf2a1b "-o"
> (gdb) print argv[8]
> $12 = 0x7ffd2faf2a1e "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2"
> (gdb) print argv[9]
> $13 = 0x0
> 
> 
> 
> 
> 
> Xvfb
> export DISPLAY=:0
> export LD_LIBRARY_PATH=/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib
> gdb -q --args /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> 
> Reading symbols from /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents...done.
> (gdb) run
> Starting program: /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> camitk-testcomponents run with arguments:
> - component library file: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so"
> - input test file: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml"
> - level of test: "2"
> - output directory: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2"
> Starting the camitk default application...
> [New Thread 0x7fffec502700 (LWP 9777)]
> [New Thread 0x7fffebbc5700 (LWP 9779)]
> [OK]
> Loading extension: /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so...
>     Loaded extension: PML Component (<b>New PML COMPONENT!</b>). Managed extension:pml
> [OK]
> Opening component: truthcube.pml...
> [New Thread 0x7fffe2854700 (LWP 9782)]
> [New Thread 0x7fffe2053700 (LWP 9783)]
> [New Thread 0x7fffe1852700 (LWP 9784)]
> [New Thread 0x7fffe1051700 (LWP 9785)]
> [New Thread 0x7fffe0850700 (LWP 9786)]
> [New Thread 0x7fffc3fff700 (LWP 9787)]
> [New Thread 0x7fffc37fe700 (LWP 9788)]
> [New Thread 0x7fffc2ffd700 (LWP 9789)]
> [OK]
> Saving component to: truthcube.pml...
> [OK]
> Closing component: truthcube.pml...
> 
> Thread 1 "camitk-testcomp" received signal SIGSEGV, Segmentation fault.
> 0x0000000000000061 in ?? ()
> 
> (gdb) bt
> #0  0x0000000000000061 in ?? ()
> #1  0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d97e90) at ./modeling/libraries/pml/MultiComponent.cpp:50
> #2  0x00007fffeb32c11f in MultiComponent::~MultiComponent (this=0x555556d97e90, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:41
> #3  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x555556d97e90, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #4  0x00007fffeb32ce3a in PhysicalModel::clear (this=this at entry=0x555555624690) at ./modeling/libraries/pml/PhysicalModel.cpp:99
> #5  0x00007fffeb32cf17 in PhysicalModel::~PhysicalModel (this=0x555555624690, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:68
> #6  0x00007fffeb32cf59 in PhysicalModel::~PhysicalModel (this=0x555555624690, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:67
> #7  0x00007fffeb317a3d in PMLComponent::~PMLComponent (this=0x5555555bb1c0, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:96
> #8  0x00007fffeb3185a9 in PMLComponent::~PMLComponent (this=0x5555555bb1c0, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:93
> #9  0x00007ffff7ec4ad7 in camitk::Application::close(camitk::Component*) () at ./sdk/libraries/core/application/Application.cpp:623
> #10 0x000055555555bc5c in main () at ./sdk/applications/testcomponents/main.cpp:204
> #11 0x00007ffff6e99b17 in __libc_start_main (main=0x55555555b080 <main>, argc=9, argv=0x7fffffffe398, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe388)
>     at ../csu/libc-start.c:310
> #12 0x000055555555c35a in _start () at ./sdk/applications/testcomponents/main.cpp:136
> 
> 
> 
> 
> 
> 
> 
> Xvfb
> export DISPLAY=:0
> export LD_LIBRARY_PATH=/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib
> valgrind /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> ==10030== Memcheck, a memory error detector
> ==10030== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
> ==10030== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
> ==10030== Command: /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> ==10030== 
> --10030-- WARNING: unhandled amd64-linux syscall: 332
> --10030-- You may be able to write your own handler.
> --10030-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
> --10030-- Nevertheless we consider this a bug.  Please report
> --10030-- it at http://valgrind.org/support/bug_reports.html.
> camitk-testcomponents run with arguments:
> - component library file: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so"
> - input test file: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml"
> - level of test: "2"
> - output directory: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2"
> Starting the camitk default application...
> ==10032== 
> ==10032== HEAP SUMMARY:
> ==10032==     in use at exit: 461,568 bytes in 4,314 blocks
> ==10032==   total heap usage: 7,236 allocs, 2,922 frees, 1,125,942 bytes allocated
> ==10032== 
> ==10032== LEAK SUMMARY:
> ==10032==    definitely lost: 2,080 bytes in 3 blocks
> ==10032==    indirectly lost: 51 bytes in 3 blocks
> ==10032==      possibly lost: 160 bytes in 2 blocks
> ==10032==    still reachable: 459,277 bytes in 4,306 blocks
> ==10032==         suppressed: 0 bytes in 0 blocks
> ==10032== Rerun with --leak-check=full to see details of leaked memory
> ==10032== 
> ==10032== For counts of detected and suppressed errors, rerun with: -v
> ==10032== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
> ==10034== Warning: invalid file descriptor 1024 in syscall close()
> ==10034== Warning: invalid file descriptor 1025 in syscall close()
> ==10034== Warning: invalid file descriptor 1026 in syscall close()
> ==10034== Warning: invalid file descriptor 1027 in syscall close()
> ==10034==    Use --log-fd=<number> to select an alternative log fd.
> ==10034== Warning: invalid file descriptor 1028 in syscall close()
> ==10034== Warning: invalid file descriptor 1029 in syscall close()
> ==10034== 
> ==10034== HEAP SUMMARY:
> ==10034==     in use at exit: 851,380 bytes in 8,424 blocks
> ==10034==   total heap usage: 16,919 allocs, 8,495 frees, 3,946,535 bytes allocated
> ==10034== 
> ==10034== LEAK SUMMARY:
> ==10034==    definitely lost: 2,616 bytes in 6 blocks
> ==10034==    indirectly lost: 88 bytes in 3 blocks
> ==10034==      possibly lost: 528 bytes in 3 blocks
> ==10034==    still reachable: 848,148 bytes in 8,412 blocks
> ==10034==         suppressed: 0 bytes in 0 blocks
> ==10034== Rerun with --leak-check=full to see details of leaked memory
> ==10034== 
> ==10034== For counts of detected and suppressed errors, rerun with: -v
> ==10034== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
> [OK]
> Loading extension: /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so...
> ==10035== 
> ==10035== HEAP SUMMARY:
> ==10035==     in use at exit: 1,021,005 bytes in 9,902 blocks
> ==10035==   total heap usage: 23,822 allocs, 13,920 frees, 4,463,793 bytes allocated
> ==10035== 
> ==10035== LEAK SUMMARY:
> ==10035==    definitely lost: 5,872 bytes in 12 blocks
> ==10035==    indirectly lost: 139 bytes in 6 blocks
> ==10035==      possibly lost: 160 bytes in 2 blocks
> ==10035==    still reachable: 1,014,834 bytes in 9,882 blocks
> ==10035==         suppressed: 0 bytes in 0 blocks
> ==10035== Rerun with --leak-check=full to see details of leaked memory
> ==10035== 
> ==10035== For counts of detected and suppressed errors, rerun with: -v
> ==10035== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
>     Loaded extension: PML Component (<b>New PML COMPONENT!</b>). Managed extension:pml
> [OK]
> Opening component: truthcube.pml...
> [OK]
> Saving component to: truthcube.pml...
> [OK]
> Closing component: truthcube.pml...
> ==10030== Invalid read of size 8
> ==10030==    at 0x11CDE0D0: MultiComponent::deleteAllSubComponents() (MultiComponent.cpp:50)
> ==10030==    by 0x11CDE11E: MultiComponent::~MultiComponent() (MultiComponent.cpp:41)
> ==10030==    by 0x11CDE148: MultiComponent::~MultiComponent() (MultiComponent.cpp:45)
> ==10030==    by 0x11CDEE39: PhysicalModel::clear() (PhysicalModel.cpp:99)
> ==10030==    by 0x11CDEF16: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:68)
> ==10030==    by 0x11CDEF58: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:69)
> ==10030==    by 0x11CC9A3C: PMLComponent::~PMLComponent() (PMLComponent.cpp:96)
> ==10030==    by 0x11CCA5A8: PMLComponent::~PMLComponent() (PMLComponent.cpp:98)
> ==10030==    by 0x48D9AD6: camitk::Application::close(camitk::Component*) (Application.cpp:623)
> ==10030==    by 0x10FC5B: main (main.cpp:204)
> ==10030==  Address 0x196eff70 is 0 bytes inside a block of size 80 free'd
> ==10030==    at 0x4836EEB: operator delete(void*) (vg_replace_malloc.c:576)
> ==10030==    by 0x11CDE0D5: MultiComponent::deleteAllSubComponents() (MultiComponent.cpp:50)
> ==10030==    by 0x11CDE11E: MultiComponent::~MultiComponent() (MultiComponent.cpp:41)
> ==10030==    by 0x11CDE148: MultiComponent::~MultiComponent() (MultiComponent.cpp:45)
> ==10030==    by 0x11CDEE39: PhysicalModel::clear() (PhysicalModel.cpp:99)
> ==10030==    by 0x11CDEF16: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:68)
> ==10030==    by 0x11CDEF58: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:69)
> ==10030==    by 0x11CC9A3C: PMLComponent::~PMLComponent() (PMLComponent.cpp:96)
> ==10030==    by 0x11CCA5A8: PMLComponent::~PMLComponent() (PMLComponent.cpp:98)
> ==10030==    by 0x48D9AD6: camitk::Application::close(camitk::Component*) (Application.cpp:623)
> ==10030==    by 0x10FC5B: main (main.cpp:204)
> ==10030==  Block was alloc'd at
> ==10030==    at 0x4835E2F: operator new(unsigned long) (vg_replace_malloc.c:334)
> ==10030==    by 0x11CE45D1: PhysicalModel::parseComponents(physicalModel::MultiComponent, Component*, bool) (PhysicalModel.cpp:510)
> ==10030==    by 0x11CE51FB: PhysicalModel::parseTree(std::unique_ptr<physicalModel::PhysicalModel, std::default_delete<physicalModel::PhysicalModel> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) (PhysicalModel.cpp:439)
> ==10030==    by 0x11CE56B3: PhysicalModel::xmlRead(char const*) (PhysicalModel.cpp:385)
> ==10030==    by 0x11CE59D1: PhysicalModel::PhysicalModel(char const*, void (*)(float)) (PhysicalModel.cpp:63)
> ==10030==    by 0x11CCA836: PMLComponent::PMLComponent(QString const&) (PMLComponent.cpp:78)
> ==10030==    by 0x11CD0AEF: PMLComponentExtension::open(QString const&) (PMLComponentExtension.cpp:67)
> ==10030==    by 0x48DAC23: camitk::Application::open(QString const&) (Application.cpp:470)
> ==10030==    by 0x10FA02: main (main.cpp:180)
> ==10030== 
> ==10030== Jump to the invalid address stated on the next line
> ==10030==    at 0x0: ???
> ==10030==    by 0x11CDE0D5: MultiComponent::deleteAllSubComponents() (MultiComponent.cpp:50)
> ==10030==    by 0x11CDE11E: MultiComponent::~MultiComponent() (MultiComponent.cpp:41)
> ==10030==    by 0x11CDE148: MultiComponent::~MultiComponent() (MultiComponent.cpp:45)
> ==10030==    by 0x11CDEE39: PhysicalModel::clear() (PhysicalModel.cpp:99)
> ==10030==    by 0x11CDEF16: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:68)
> ==10030==    by 0x11CDEF58: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:69)
> ==10030==    by 0x11CC9A3C: PMLComponent::~PMLComponent() (PMLComponent.cpp:96)
> ==10030==    by 0x11CCA5A8: PMLComponent::~PMLComponent() (PMLComponent.cpp:98)
> ==10030==    by 0x48D9AD6: camitk::Application::close(camitk::Component*) (Application.cpp:623)
> ==10030==    by 0x10FC5B: main (main.cpp:204)
> ==10030==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> ==10030== 
> ==10030== 
> ==10030== Process terminating with default action of signal 11 (SIGSEGV)
> ==10030==  Bad permissions for mapped region at address 0x0
> ==10030==    at 0x0: ???
> ==10030==    by 0x11CDE0D5: MultiComponent::deleteAllSubComponents() (MultiComponent.cpp:50)
> ==10030==    by 0x11CDE11E: MultiComponent::~MultiComponent() (MultiComponent.cpp:41)
> ==10030==    by 0x11CDE148: MultiComponent::~MultiComponent() (MultiComponent.cpp:45)
> ==10030==    by 0x11CDEE39: PhysicalModel::clear() (PhysicalModel.cpp:99)
> ==10030==    by 0x11CDEF16: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:68)
> ==10030==    by 0x11CDEF58: PhysicalModel::~PhysicalModel() (PhysicalModel.cpp:69)
> ==10030==    by 0x11CC9A3C: PMLComponent::~PMLComponent() (PMLComponent.cpp:96)
> ==10030==    by 0x11CCA5A8: PMLComponent::~PMLComponent() (PMLComponent.cpp:98)
> ==10030==    by 0x48D9AD6: camitk::Application::close(camitk::Component*) (Application.cpp:623)
> ==10030==    by 0x10FC5B: main (main.cpp:204)
> ==10030== 
> ==10030== HEAP SUMMARY:
> ==10030==     in use at exit: 8,523,333 bytes in 54,797 blocks
> ==10030==   total heap usage: 714,992 allocs, 660,195 frees, 204,054,986 bytes allocated
> ==10030== 
> ==10030== LEAK SUMMARY:
> ==10030==    definitely lost: 181,736 bytes in 1,507 blocks
> ==10030==    indirectly lost: 1,601,472 bytes in 18,778 blocks
> ==10030==      possibly lost: 38,017 bytes in 488 blocks
> ==10030==    still reachable: 6,702,108 bytes in 34,024 blocks
> ==10030==         suppressed: 0 bytes in 0 blocks
> ==10030== Rerun with --leak-check=full to see details of leaked memory
> ==10030== 
> ==10030== For counts of detected and suppressed errors, rerun with: -v
> ==10030== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 2 from 2)
> Speicherzugriffsfehler (Speicherabzug geschrieben)
> 
> 
> 
> 
> 
> 
> gdb -q --args /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> 
> directory /home/benutzer/camitk/try1/camitk-4.1.2
> set height 0
> set width 0
> set pagination off
> b MultiComponent.cpp:50
> y
> run
> display component
> display components
> cont
> 
> 
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d9e900) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> (gdb) display component
> 1: component = (Component *&) @0x555558287ff0: 0x555557c5ee60
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d9e900) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x555558287ff8: 0x555557c5ffe0
> (gdb) 
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98b90) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x555558296a50: 0x5555579d7950
> (gdb) 
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x5555579d7950) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x55555855c5e0: 0x5555585561e0
> (gdb) 
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98b90) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x555558296a58: 0x555557c57660
> (gdb) 
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98b90) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x555558296a60: 0x555557c57660
> (gdb) 
> Continuing.
> 
> Thread 1 "camitk-testcomp" received signal SIGSEGV, Segmentation fault.
> 0x0000000000000061 in ?? ()
> 
> 
> 
> -> 0x555557c57660 is deleted twice ?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> gdb -q --args /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> Reading symbols from /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents...done.
> (gdb) directory /home/benutzer/camitk/try1/camitk-4.1.2
> Source directories searched: /home/benutzer/camitk/try1/camitk-4.1.2:$cdir:$cwd
> (gdb) set height 0
> (gdb) set width 0
> (gdb) set pagination off
> (gdb) b MultiComponent.cpp:50
> No source file named MultiComponent.cpp.
> Make breakpoint pending on future shared library load? (y or [n]) y
> Breakpoint 1 (MultiComponent.cpp:50) pending.
> (gdb) run
> Starting program: /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> camitk-testcomponents run with arguments:
> - component library file: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so"
> - input test file: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml"
> - level of test: "2"
> - output directory: "/home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2"
> Starting the camitk default application...
> [New Thread 0x7fffec502700 (LWP 10849)]
> [New Thread 0x7fffebbc5700 (LWP 10851)]
> [OK]
> Loading extension: /home/benutzer/camitk/try1/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so...
>     Loaded extension: PML Component (<b>New PML COMPONENT!</b>). Managed extension:pml
> [OK]
> Opening component: truthcube.pml...
> [New Thread 0x7fffe2854700 (LWP 10854)]
> [New Thread 0x7fffe2053700 (LWP 10855)]
> [New Thread 0x7fffe1852700 (LWP 10856)]
> [New Thread 0x7fffe1051700 (LWP 10857)]
> [New Thread 0x7fffe0850700 (LWP 10858)]
> [New Thread 0x7fffcbfff700 (LWP 10859)]
> [New Thread 0x7fffcb7fe700 (LWP 10860)]
> [New Thread 0x7fffcaffd700 (LWP 10861)]
> [OK]
> Saving component to: truthcube.pml...
> [OK]
> Closing component: truthcube.pml...
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d9e0a0) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> (gdb) display component
> 1: component = (Component *&) @0x555558287790: 0x555557c5e600
> (gdb) display components
> 2: components = std::vector of length 2, capacity 2 = {0x555557c5e600, 0x555557c5f780}
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d9e0a0) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x555558287798: 0x555557c5f780
> 2: components = std::vector of length 1, capacity 2 = {0x555557c5f780}
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x5555582961f0: 0x5555579d70f0
> 2: components = std::vector of length 3, capacity 4 = {0x5555579d70f0, 0x555558698970, 0x555557c56e00}
> (gdb) print components->_M_impl._M_finish
> $1 = (std::_Vector_base<Component*, std::allocator<Component*> >::pointer) 0x555558296208
> (gdb) print components->_M_impl._M_finish - components->_M_impl._M_start
> $2 = 3
> (gdb) print &(components->_M_impl._M_finish)
> $3 = (std::_Vector_base<Component*, std::allocator<Component*> >::pointer *) 0x555556d98368
> (gdb) print &(components->_M_impl._M_start) 
> $4 = (std::_Vector_base<Component*, std::allocator<Component*> >::pointer *) 0x555556d98360
> (gdb) watch *0x555556d98368
> Hardware watchpoint 2: *0x555556d98368
> (gdb) watch *0x555556d98360
> Hardware watchpoint 3: *0x555556d98360
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x5555579d70f0) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x55555855bd80: 0x555558555980
> 2: components = std::vector of length 1, capacity 1 = {0x555558555980}
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Hardware watchpoint 2: *0x555556d98368
> 
> Old value = 1479107080
> New value = 1479107072
> MultiComponent::removeSubComponent (c=0x5555579d70f0, this=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.h:134
> 134             c->removeParentMultiComponent(this);
> 2: components = std::vector of length 2, capacity 4 = {0x555558698970, 0x555557c56e00}
> (gdb) bt
> #0  MultiComponent::removeSubComponent (c=0x5555579d70f0, this=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.h:134
> #1  Component::removeFromParents() () at ./modeling/libraries/pml/Component.cpp:60
> #2  0x00007fffeb32c127 in MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:44
> #3  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #4  0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> #5  0x00007fffeb32c11f in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:41
> #6  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #7  0x00007fffeb32ce3a in PhysicalModel::clear (this=this at entry=0x555555705ef0) at ./modeling/libraries/pml/PhysicalModel.cpp:99
> #8  0x00007fffeb32cf17 in PhysicalModel::~PhysicalModel (this=0x555555705ef0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:68
> #9  0x00007fffeb32cf59 in PhysicalModel::~PhysicalModel (this=0x555555705ef0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:67
> #10 0x00007fffeb317a3d in PMLComponent::~PMLComponent (this=0x555555660a00, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:96
> #11 0x00007fffeb3185a9 in PMLComponent::~PMLComponent (this=0x555555660a00, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:93
> #12 0x00007ffff7ec4ad7 in camitk::Application::close(camitk::Component*) () at ./sdk/libraries/core/application/Application.cpp:623
> #13 0x000055555555bc5c in main () at ./sdk/applications/testcomponents/main.cpp:204
> #14 0x00007ffff6e99b17 in __libc_start_main (main=0x55555555b080 <main>, argc=9, argv=0x7fffffffe398, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe388) at ../csu/libc-start.c:310
> #15 0x000055555555c35a in _start () at ./sdk/applications/testcomponents/main.cpp:136
> (gdb) finish
> Run till exit from #0  MultiComponent::removeSubComponent (c=0x5555579d70f0, this=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.h:134
> Component::removeFromParents() () at ./modeling/libraries/pml/Component.cpp:51
> 51          std::vector <MultiComponent*> parentMultiComponentsCopy;
> 2: components = <error: There is no member or method named components.>
> (gdb) 
> Run till exit from #0  Component::removeFromParents() () at ./modeling/libraries/pml/Component.cpp:51
> MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> 38      MultiComponent::~MultiComponent() {
> 2: components = std::vector of length 0, capacity 1
> (gdb) 
> Run till exit from #0  MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> 0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> 38      MultiComponent::~MultiComponent() {
> 2: components = std::vector of length 0, capacity 1
> (gdb) 
> Run till exit from #0  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x5555579d70f0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> 0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x5555582961f0: 0x555558698970
> 2: components = std::vector of length 2, capacity 4 = {0x555558698970, 0x555557c56e00}
> (gdb) print components->_M_impl._M_finish - components->_M_impl._M_start
> $5 = 2
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x5555582961f8: 0x555557c56e00
> 2: components = std::vector of length 2, capacity 4 = {0x555558698970, 0x555557c56e00}
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Hardware watchpoint 2: *0x555556d98368
> 
> Old value = 1479107072
> New value = 1479107064
> MultiComponent::removeSubComponent (c=0x555557c56e00, this=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.h:134
> 134             c->removeParentMultiComponent(this);
> 2: components = std::vector of length 1, capacity 4 = {0x555558698970}
> (gdb) finish
> Run till exit from #0  MultiComponent::removeSubComponent (c=0x555557c56e00, this=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.h:134
> Component::removeFromParents() () at ./modeling/libraries/pml/Component.cpp:51
> 51          std::vector <MultiComponent*> parentMultiComponentsCopy;
> 2: components = <error: There is no member or method named components.>
> (gdb) 
> Run till exit from #0  Component::removeFromParents() () at ./modeling/libraries/pml/Component.cpp:51
> StructuralComponent::~StructuralComponent (this=0x555557c56e00, __in_chrg=<optimized out>) at ./modeling/libraries/pml/StructuralComponent.cpp:73
> 73      StructuralComponent::~StructuralComponent() {
> 2: components = <error: There is no member or method named components.>
> (gdb) 
> Run till exit from #0  StructuralComponent::~StructuralComponent (this=0x555557c56e00, __in_chrg=<optimized out>) at ./modeling/libraries/pml/StructuralComponent.cpp:73
> 0x00007fffeb3340a9 in StructuralComponent::~StructuralComponent (this=0x555557c56e00, __in_chrg=<optimized out>) at ./modeling/libraries/pml/StructuralComponent.cpp:73
> 73      StructuralComponent::~StructuralComponent() {
> 2: components = <error: There is no member or method named components.>
> (gdb) 
> Run till exit from #0  0x00007fffeb3340a9 in StructuralComponent::~StructuralComponent (this=0x555557c56e00, __in_chrg=<optimized out>) at ./modeling/libraries/pml/StructuralComponent.cpp:73
> 0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x5555582961f8: 0x555557c56e00
> 2: components = std::vector of length 1, capacity 4 = {0x555558698970}
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" hit Breakpoint 1, MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> 1: component = (Component *&) @0x555558296200: 0x555557c56e00
> 2: components = std::vector of length 1, capacity 4 = {0x555558698970}
> (gdb) cont
> Continuing.
> 
> Thread 1 "camitk-testcomp" received signal SIGSEGV, Segmentation fault.
> 0x0000000000000061 in ?? ()
> 2: components = <error: current stack frame does not contain a variable named `this'>
> (gdb) bt
> #0  0x0000000000000061 in ?? ()
> #1  0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> #2  0x00007fffeb32c11f in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:41
> #3  0x00007fffeb32c149 in MultiComponent::~MultiComponent (this=0x555556d98330, __in_chrg=<optimized out>) at ./modeling/libraries/pml/MultiComponent.cpp:38
> #4  0x00007fffeb32ce3a in PhysicalModel::clear (this=this at entry=0x555555705ef0) at ./modeling/libraries/pml/PhysicalModel.cpp:99
> #5  0x00007fffeb32cf17 in PhysicalModel::~PhysicalModel (this=0x555555705ef0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:68
> #6  0x00007fffeb32cf59 in PhysicalModel::~PhysicalModel (this=0x555555705ef0, __in_chrg=<optimized out>) at ./modeling/libraries/pml/PhysicalModel.cpp:67
> #7  0x00007fffeb317a3d in PMLComponent::~PMLComponent (this=0x555555660a00, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:96
> #8  0x00007fffeb3185a9 in PMLComponent::~PMLComponent (this=0x555555660a00, __in_chrg=<optimized out>) at ./modeling/components/pmlcomponent/PMLComponent.cpp:93
> #9  0x00007ffff7ec4ad7 in camitk::Application::close(camitk::Component*) () at ./sdk/libraries/core/application/Application.cpp:623
> #10 0x000055555555bc5c in main () at ./sdk/applications/testcomponents/main.cpp:204
> #11 0x00007ffff6e99b17 in __libc_start_main (main=0x55555555b080 <main>, argc=9, argv=0x7fffffffe398, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe388) at ../csu/libc-start.c:310
> #12 0x000055555555c35a in _start () at ./sdk/applications/testcomponents/main.cpp:136
> (gdb) up
> #1  0x00007fffeb32c0d6 in MultiComponent::deleteAllSubComponents (this=this at entry=0x555556d98330) at ./modeling/libraries/pml/MultiComponent.cpp:50
> 50              delete component;
> (gdb) list -
> 45      }
> 46
> 47      // ------------------ deleteAllSubComponents ---------------------
> 48      void MultiComponent::deleteAllSubComponents() {
> 49          for (auto& component : components) {
> 50              delete component;
> 51          }
> 52          components.clear();
> 53      }
> 54
> (gdb)
> 
> 
> 
> 
> 
> 
> 
> (gdb) list modeling/libraries/pml/MultiComponent.h:134
> 129     }
> 130     inline void MultiComponent::removeSubComponent(Component* c) {
> 131         auto it = std::find(components.begin(), components.end(), c);
> 132         if (it != components.end()) {
> 133             components.erase(it);
> 134             c->removeParentMultiComponent(this);
> 135         }
> 136     }
> 
> 
> 
> 
> 
> 
> 
> 
> 
> benutzer at debian:~/camitk/try2/camitk-4.1.2$ git init
> Leeres Git-Repository in /home/benutzer/camitk/try2/camitk-4.1.2/.git/ initialisiert
> benutzer at debian:~/camitk/try2/camitk-4.1.2$ git add .
> benutzer at debian:~/camitk/try2/camitk-4.1.2$ git config user.name "Bernhard Übelacker"
> benutzer at debian:~/camitk/try2/camitk-4.1.2$ git config user.email "bernhardu at mailbox.org"
> benutzer at debian:~/camitk/try2/camitk-4.1.2$ git commit -m "Initial commit"
> 
> mc -e modeling/libraries/pml/MultiComponent.cpp
> 
> 
> 
> Xvfb
> export DISPLAY=:0
> export LD_LIBRARY_PATH=/home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/lib
> 
> valgrind /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> 
> 
> gdb -q --args /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/bin/camitk-testcomponents -i /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/share/camitk-4.1/testdata/truthcube.pml -c /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/lib/camitk-4.1/components/libpmlcomponent.so -l 2 -o /home/benutzer/camitk/try2/camitk-4.1.2/camitk-build/Testing/Temporary/component-pmlcomponent-level3-2
> 
> directory /home/benutzer/camitk/try2/camitk-4.1.2
> set height 0
> set width 0
> set pagination off
> b MultiComponent.cpp:50
> y
> run
> display component
> display components
> cont
> 
> 
> 
> 
> 
> 
> https://en.cppreference.com/w/cpp/language/range-for
> https://en.cppreference.com/w/cpp/container/vector/erase
>     "Invalidates iterators and references at or after the point of the erase, including the end() iterator. "
> 
> https://stackoverflow.com/questions/10360461/removing-item-from-vector-while-in-c11-range-for-loop

> _______________________________________________
> Debian-med-packaging mailing list
> Debian-med-packaging at alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-med-packaging


-- 
http://fam-tille.de



More information about the Debian-med-packaging mailing list