Błąd "free(): invalid next size (fast)". Gdzie leży przyczyna?

0

Witajcie,

Oto całe repo: https://github.com/patrykbajos/ZinotEngine.
Najważniejsze pliki, na które chciałbym zwrócić uwagę to są:
https://github.com/patrykbajos/ZinotEngine/blob/master/src/zinot/core/resources/MapResMgr.cpp
https://github.com/patrykbajos/ZinotEngine/blob/master/src/zinot/core/resources/Resource.cpp
https://github.com/patrykbajos/ZinotEngine/blob/master/src/zinot/core/engine/Viewport.cpp

https://github.com/patrykbajos/ZinotEngine/blob/master/src/zinot/core/engine/Window.cpp
https://github.com/patrykbajos/ZinotEngine/blob/master/src/zinot/core/engine/resources/models/Model.cpp
https://github.com/patrykbajos/ZinotEngine/blob/master/src/zinot/core/engine/Engine.cpp

I t takiej też kolejności iceniałbym możliwość istnienia błędów. Próbowałem debuggerem, ale jak uruchamiam to z GDB to nie wyswietla tych komunikatów i nie wiem dokładnie stosu wywołania tych metod. Niby zakomentowałem usuwanie w Zint::MapResMgr::~MapResMgr(), ale też wywala, a do tego doprowadził mnie ten stacktrace z komunikatu. Oto komunikat:

*** Error in `/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine': free(): invalid next size (fast): 0x00000000017d4ac0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7fbb551f2725]
/lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7fbb551faf4a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fbb551feabc]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZN8QMapDataIjPN5Zinot8ResourceEE7destroyEv+0x5e)[0x416bae]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZN4QMapIjPN5Zinot8ResourceEED1Ev+0x31)[0x415f45]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZN5Zinot9MapResMgrD1Ev+0x28)[0x41c4d4]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZNKSt14default_deleteIN5Zinot9MapResMgrEEclEPS1_+0x22)[0x413ff2]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZNSt10unique_ptrIN5Zinot9MapResMgrESt14default_deleteIS1_EED1Ev+0x47)[0x413f2b]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZN5Zinot8ViewportD2Ev+0x2e)[0x413e4c]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZNKSt14default_deleteIN5Zinot8ViewportEEclEPS1_+0x22)[0x413e72]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZNSt10unique_ptrIN5Zinot8ViewportESt14default_deleteIS1_EED1Ev+0x47)[0x413ced]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZN5Zinot6WindowD1Ev+0x1c)[0x413b4c]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZNKSt14default_deleteIN5Zinot6WindowEEclEPS1_+0x22)[0x413b7e]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZNSt10unique_ptrIN5Zinot6WindowESt14default_deleteIS1_EED1Ev+0x47)[0x413a83]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_ZN5Zinot6EngineD1Ev+0x18)[0x4139a8]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(main+0x41)[0x4138a7]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fbb5519b830]
/home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine(_start+0x29)[0x413799]
======= Memory map: ========
00400000-00428000 r-xp 00000000 08:07 3292823                            /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine
00628000-00629000 r--p 00028000 08:07 3292823                            /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine
00629000-0062a000 rw-p 00029000 08:07 3292823                            /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/ZinotEngine
0154f000-019b3000 rw-p 00000000 00:00 0                                  [heap]
7fbb44000000-7fbb44021000 rw-p 00000000 00:00 0 
7fbb44021000-7fbb48000000 ---p 00000000 00:00 0 
7fbb49abc000-7fbb49af3000 r-xp 00000000 08:06 404644                     /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0
7fbb49af3000-7fbb49cf2000 ---p 00037000 08:06 404644                     /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0
7fbb49cf2000-7fbb49cf3000 r--p 00036000 08:06 404644                     /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0
7fbb49cf3000-7fbb49cf4000 rw-p 00037000 08:06 404644                     /usr/lib/x86_64-linux-gnu/libtxc_dxtn_s2tc.so.0.0.0
7fbb49cf4000-7fbb49cf5000 ---p 00000000 00:00 0 
7fbb49cf5000-7fbb4a4f5000 rw-p 00000000 00:00 0 
7fbb4a4f5000-7fbb4a508000 r-xp 00000000 08:06 137119                     /lib/x86_64-linux-gnu/libbsd.so.0.8.2
7fbb4a508000-7fbb4a707000 ---p 00013000 08:06 137119                     /lib/x86_64-linux-gnu/libbsd.so.0.8.2
7fbb4a707000-7fbb4a708000 r--p 00012000 08:06 137119                     /lib/x86_64-linux-gnu/libbsd.so.0.8.2
7fbb4a708000-7fbb4a709000 rw-p 00013000 08:06 137119                     /lib/x86_64-linux-gnu/libbsd.so.0.8.2
7fbb4a709000-7fbb4a70a000 rw-p 00000000 00:00 0 
7fbb4a70a000-7fbb4a72f000 r-xp 00000000 08:06 137295                     /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbb4a72f000-7fbb4a92e000 ---p 00025000 08:06 137295                     /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbb4a92e000-7fbb4a932000 r--p 00024000 08:06 137295                     /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbb4a932000-7fbb4a933000 rw-p 00028000 08:06 137295                     /lib/x86_64-linux-gnu/libtinfo.so.5.9
7fbb4a933000-7fbb4a964000 r-xp 00000000 08:06 403793                     /usr/lib/x86_64-linux-gnu/libedit.so.2.0.53
7fbb4a964000-7fbb4ab64000 ---p 00031000 08:06 403793                     /usr/lib/x86_64-linux-gnu/libedit.so.2.0.53
7fbb4ab64000-7fbb4ab66000 r--p 00031000 08:06 403793                     /usr/lib/x86_64-linux-gnu/libedit.so.2.0.53
7fbb4ab66000-7fbb4ab67000 rw-p 00033000 08:06 403793                     /usr/lib/x86_64-linux-gnu/libedit.so.2.0.53
7fbb4ab67000-7fbb4ab6b000 rw-p 00000000 00:00 0 
7fbb4ab6b000-7fbb4ab72000 r-xp 00000000 08:06 403841                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7fbb4ab72000-7fbb4ad71000 ---p 00007000 08:06 403841                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7fbb4ad71000-7fbb4ad72000 r--p 00006000 08:06 403841                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7fbb4ad72000-7fbb4ad73000 rw-p 00007000 08:06 403841                     /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
7fbb4ad73000-7fbb4d265000 r-xp 00000000 08:06 399763                     /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1
7fbb4d265000-7fbb4d465000 ---p 024f2000 08:06 399763                     /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1
7fbb4d465000-7fbb4d71a000 r--p 024f2000 08:06 399763                     /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1
7fbb4d71a000-7fbb4d71c000 rw-p 027a7000 08:06 399763                     /usr/lib/x86_64-linux-gnu/libLLVM-3.8.so.1
7fbb4d71c000-7fbb4d746000 rw-p 00000000 00:00 0 
7fbb4d746000-7fbb4d75d000 r-xp 00000000 08:06 403798                     /usr/lib/x86_64-linux-gnu/libelf-0.165.so
7fbb4d75d000-7fbb4d95c000 ---p 00017000 08:06 403798                     /usr/lib/x86_64-linux-gnu/libelf-0.165.so
7fbb4d95c000-7fbb4d95d000 r--p 00016000 08:06 403798                     /usr/lib/x86_64-linux-gnu/libelf-0.165.so
7fbb4d95d000-7fbb4d95e000 rw-p 00017000 08:06 403798                     /usr/lib/x86_64-linux-gnu/libelf-0.165.so
7fbb4d95e000-7fbb4d965000 r-xp 00000000 08:06 398763                     /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0
7fbb4d965000-7fbb4db64000 ---p 00007000 08:06 398763                     /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0
7fbb4db64000-7fbb4db65000 r--p 00006000 08:06 398763                     /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0
7fbb4db65000-7fbb4db66000 rw-p 00007000 08:06 398763                     /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0
7fbb4db66000-7fbb4db71000 r-xp 00000000 08:06 399734                     /usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1.0.1
7fbb4db71000-7fbb4dd70000 ---p 0000b000 08:06 399734                     /usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1.0.1
7fbb4dd70000-7fbb4dd71000 r--p 0000a000 08:06 399734                     /usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1.0.1
7fbb4dd71000-7fbb4dd72000 rw-p 0000b000 08:06 399734                     /usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1.0.1
7fbb4dd72000-7fbb4dd79000 r-xp 00000000 08:06 399729                     /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0
7fbb4dd79000-7fbb4df78000 ---p 00007000 08:06 399729                     /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0
7fbb4df78000-7fbb4df79000 r--p 00006000 08:06 399729                     /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0
7fbb4df79000-7fbb4df7a000 rw-p 00007000 08:06 399729                     /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0
7fbb4df7a000-7fbb4e841000 r-xp 00000000 08:06 656032                     /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
7fbb4e841000-7fbb4ea40000 ---p 008c7000 08:06 656032                     /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
7fbb4ea40000-7fbb4eab4000 r--p 008c6000 08:06 656032                     /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
7fbb4eab4000-7fbb4eac3000 rw-p 0093a000 08:06 656032                     /usr/lib/x86_64-linux-gnu/dri/r600_dri.so
7fbb4eac3000-7fbb4ecb9000 rw-p 00000000 00:00 0 
7fbb4ecb9000-7fbb4ed27000 r-xp 00000000 08:06 137252                     /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fbb4ed27000-7fbb4ef27000 ---p 0006e000 08:06 137252                     /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fbb4ef27000-7fbb4ef28000 r--p 0006e000 08:06 137252                     /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fbb4ef28000-7fbb4ef29000 rw-p 0006f000 08:06 137252                     /lib/x86_64-linux-gnu/libpcre.so.3.13.2
7fbb4ef29000-7fbb4ef37000 r-xp 00000000 08:06 393380                     /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
7fbb4ef37000-7fbb4f136000 ---p 0000e000 08:06 393380                     /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
7fbb4f136000-7fbb4f137000 r--p 0000d000 08:06 393380                     /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
7fbb4f137000-7fbb4f138000 rw-p 0000e000 08:06 393380                     /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
7fbb4f138000-7fbb4f13d000 r-xp 00000000 08:06 403508                     /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
7fbb4f13d000-7fbb4f33c000 ---p 00005000 08:06 403508                     /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
7fbb4f33c000-7fbb4f33d000 r--p 00004000 08:06 403508                     /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
7fbb4f33d000-7fbb4f33e000 rw-p 00005000 08:06 403508                     /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
7fbb4f33e000-7fbb4f342000 r-xp 00000000 08:06 404805                     /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
7fbb4f342000-7fbb4f541000 ---p 00004000 08:06 404805                     /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
7fbb4f541000-7fbb4f542000 r--p 00003000 08:06 404805                     /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
7fbb4f542000-7fbb4f543000 rw-p 00004000 08:06 404805                     /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
7fbb4f543000-7fbb4f55a000 r-xp 00000000 08:06 404809                     /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
7fbb4f55a000-7fbb4f759000 ---p 00017000 08:06 404809                     /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
7fbb4f759000-7fbb4f75b000 r--p 00016000 08:06 404809                     /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
7fbb4f75b000-7fbb4f75c000 rw-p 00018000 08:06 404809                     /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
7fbb4f75c000-7fbb4f761000 r-xp 00000000 08:06 403474                     /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7fbb4f761000-7fbb4f960000 ---p 00005000 08:06 403474                     /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7fbb4f960000-7fbb4f961000 r--p 00004000 08:06 403474                     /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7fbb4f961000-7fbb4f962000 rw-p 00005000 08:06 403474                     /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
7fbb4f962000-7fbb4f964000 r-xp 00000000 08:06 403468                     /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7fbb4f964000-7fbb4fb63000 ---p 00002000 08:06 403468                     /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7fbb4fb63000-7fbb4fb64000 r--p 00001000 08:06 403468                     /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7fbb4fb64000-7fbb4fb65000 rw-p 00002000 08:06 403468                     /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
7fbb4fb65000-7fbb4fb76000 r-xp 00000000 08:06 403472                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7fbb4fb76000-7fbb4fd75000 ---p 00011000 08:06 403472                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7fbb4fd75000-7fbb4fd76000 r--p 00010000 08:06 403472                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7fbb4fd76000-7fbb4fd77000 rw-p 00011000 08:06 403472                     /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
7fbb4fd77000-7fbb4fda0000 r-xp 00000000 08:06 403964                     /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
7fbb4fda0000-7fbb4ff9f000 ---p 00029000 08:06 403964                     /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
7fbb4ff9f000-7fbb4ffa3000 r--p 00028000 08:06 403964                     /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
7fbb4ffa3000-7fbb4ffa4000 rw-p 0002c000 08:06 403964                     /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
7fbb4ffa4000-7fbb4ffa5000 rw-p 00000000 00:00 0 
7fbb4ffa5000-7fbb4ffa6000 r-xp 00000000 08:06 404849                     /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
7fbb4ffa6000-7fbb501a6000 ---p 00001000 08:06 404849                     /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
7fbb501a6000-7fbb501a7000 r--p 00001000 08:06 404849                     /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
7fbb501a7000-7fbb501a8000 rw-p 00002000 08:06 404849                     /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
7fbb501a8000-7fbb501ad000 r-xp 00000000 08:06 404829                     /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
7fbb501ad000-7fbb503ad000 ---p 00005000 08:06 404829                     /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
7fbb503ad000-7fbb503ae000 r--p 00005000 08:06 404829                     /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
7fbb503ae000-7fbb503af000 rw-p 00006000 08:06 404829                     /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
7fbb503af000-7fbb503b1000 r-xp 00000000 08:06 404817                     /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
7fbb503b1000-7fbb505b0000 ---p 00002000 08:06 404817                     /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
7fbb505b0000-7fbb505b1000 r--p 00001000 08:06 404817                     /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
7fbb505b1000-7fbb505b2000 rw-p 00002000 08:06 404817                     /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
7fbb505b2000-7fbb505b4000 r-xp 00000000 08:06 404807                     /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
7fbb505b4000-7fbb507b3000 ---p 00002000 08:06 404807                     /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
7fbb507b3000-7fbb507b4000 r--p 00001000 08:06 404807                     /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
7fbb507b4000-7fbb507b5000 rw-p 00002000 08:06 404807                     /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
7fbb507b5000-7fbb507db000 r-xp 00000000 08:06 136828                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbb507db000-7fbb509db000 ---p 00026000 08:06 136828                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbb509db000-7fbb509dd000 r--p 00026000 08:06 136828                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbb509dd000-7fbb509de000 rw-p 00028000 08:06 136828                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbb509de000-7fbb509e3000 r-xp 00000000 08:06 404831                     /usr/lib/x86_64-linux-gnu/libxcb-util.so.1.0.0
7fbb509e3000-7fbb50be2000 ---p 00005000 08:06 404831                     /usr/lib/x86_64-linux-gnu/libxcb-util.so.1.0.0
7fbb50be2000-7fbb50be3000 r--p 00004000 08:06 404831                     /usr/lib/x86_64-linux-gnu/libxcb-util.so.1.0.0
7fbb50be3000-7fbb50be4000 rw-p 00005000 08:06 404831                     /usr/lib/x86_64-linux-gnu/libxcb-util.so.1.0.0
7fbb50be4000-7fbb50be6000 r-xp 00000000 08:06 404827                     /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
7fbb50be6000-7fbb50de6000 ---p 00002000 08:06 404827                     /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
7fbb50de6000-7fbb50de7000 r--p 00002000 08:06 404827                     /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
7fbb50de7000-7fbb50de8000 rw-p 00003000 08:06 404827                     /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
7fbb50de8000-7fbb50ded000 r-xp 00000000 08:06 403470                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7fbb50ded000-7fbb50fec000 ---p 00005000 08:06 403470                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7fbb50fec000-7fbb50fed000 r--p 00004000 08:06 403470                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7fbb50fed000-7fbb50fee000 rw-p 00005000 08:06 403470                     /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
7fbb50fee000-7fbb50ff0000 r-xp 00000000 08:06 403459                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7fbb50ff0000-7fbb511f0000 ---p 00002000 08:06 403459                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7fbb511f0000-7fbb511f1000 r--p 00002000 08:06 403459                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7fbb511f1000-7fbb511f2000 rw-p 00003000 08:06 403459                     /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
7fbb511f2000-7fbb51301000 r-xp 00000000 08:06 140252                     /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
7fbb51301000-7fbb51500000 ---p 0010f000 08:06 140252                     /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
7fbb51500000-7fbb51501000 r--p 0010e000 08:06 140252                     /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
7fbb51501000-7fbb51502000 rw-p 0010f000 08:06 140252                     /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
7fbb51502000-7fbb51503000 rw-p 00000000 00:00 0 
7fbb51503000-7fbb51504000 r-xp 00000000 08:06 395073                     /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4800.1
7fbb51504000-7fbb51703000 ---p 00001000 08:06 395073                     /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4800.1
7fbb51703000-7fbb51704000 r--p 00000000 08:06 395073                     /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4800.1
7fbb51704000-7fbb51705000 rw-p 00001000 08:06 395073                     /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.4800.1
7fbb51705000-7fbb51708000 r-xp 00000000 08:06 137147                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbb51708000-7fbb51907000 ---p 00003000 08:06 137147                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbb51907000-7fbb51908000 r--p 00002000 08:06 137147                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbb51908000-7fbb51909000 rw-p 00003000 08:06 137147                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbb51909000-7fbb53133000 r--p 00000000 08:07 532063                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicudata.so.54.1
7fbb53133000-7fbb53332000 ---p 0182a000 08:07 532063                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicudata.so.54.1
7fbb53332000-7fbb53333000 rw-p 01829000 08:07 532063                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicudata.so.54.1
7fbb53333000-7fbb534cb000 r-xp 00000000 08:07 532065                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicuuc.so.54.1
7fbb534cb000-7fbb536cb000 ---p 00198000 08:07 532065                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicuuc.so.54.1
7fbb536cb000-7fbb536dd000 rw-p 00198000 08:07 532065                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicuuc.so.54.1
7fbb536dd000-7fbb536e1000 rw-p 00000000 00:00 0 
7fbb536e1000-7fbb5393d000 r-xp 00000000 08:07 532064                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicui18n.so.54.1
7fbb5393d000-7fbb53b3d000 ---p 0025c000 08:07 532064                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicui18n.so.54.1
7fbb53b3d000-7fbb53b4e000 rw-p 0025c000 08:07 532064                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libicui18n.so.54.1
7fbb53b4e000-7fbb53b4f000 rw-p 00000000 00:00 0 
7fbb53b4f000-7fbb53b59000 r-xp 00000000 08:06 397925                     /usr/lib/x86_64-linux-gnu/libminizip.so.1.0.0
7fbb53b59000-7fbb53d58000 ---p 0000a000 08:06 397925                     /usr/lib/x86_64-linux-gnu/libminizip.so.1.0.0
7fbb53d58000-7fbb53d59000 r--p 00009000 08:06 397925                     /usr/lib/x86_64-linux-gnu/libminizip.so.1.0.0
7fbb53d59000-7fbb53d5a000 rw-p 0000a000 08:06 397925                     /usr/lib/x86_64-linux-gnu/libminizip.so.1.0.0
7fbb53d5a000-7fbb53d73000 r-xp 00000000 08:06 137314                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbb53d73000-7fbb53f72000 ---p 00019000 08:06 137314                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbb53f72000-7fbb53f73000 r--p 00018000 08:06 137314                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbb53f73000-7fbb53f74000 rw-p 00019000 08:06 137314                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbb53f74000-7fbb53f7b000 r-xp 00000000 08:06 137277                     /lib/x86_64-linux-gnu/librt-2.23.so
7fbb53f7b000-7fbb5417a000 ---p 00007000 08:06 137277                     /lib/x86_64-linux-gnu/librt-2.23.so
7fbb5417a000-7fbb5417b000 r--p 00006000 08:06 137277                     /lib/x86_64-linux-gnu/librt-2.23.so
7fbb5417b000-7fbb5417c000 rw-p 00007000 08:06 137277                     /lib/x86_64-linux-gnu/librt-2.23.so
7fbb5417c000-7fbb54194000 r-xp 00000000 08:06 137269                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbb54194000-7fbb54393000 ---p 00018000 08:06 137269                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbb54393000-7fbb54394000 r--p 00017000 08:06 137269                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbb54394000-7fbb54395000 rw-p 00018000 08:06 137269                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbb54395000-7fbb54399000 rw-p 00000000 00:00 0 
7fbb54399000-7fbb54406000 r-xp 00000000 08:06 657410                     /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
7fbb54406000-7fbb54605000 ---p 0006d000 08:06 657410                     /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
7fbb54605000-7fbb54608000 r--p 0006c000 08:06 657410                     /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
7fbb54608000-7fbb54609000 rw-p 0006f000 08:06 657410                     /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
7fbb54609000-7fbb5460a000 rw-p 00000000 00:00 0 
7fbb5460a000-7fbb54616000 r-xp 00000000 08:06 404819                     /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0.1.0
7fbb54616000-7fbb54816000 ---p 0000c000 08:06 404819                     /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0.1.0
7fbb54816000-7fbb54817000 r--p 0000c000 08:06 404819                     /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0.1.0
7fbb54817000-7fbb54818000 rw-p 0000d000 08:06 404819                     /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0.1.0
7fbb54818000-7fbb5481c000 r-xp 00000000 08:06 404813                     /usr/lib/x86_64-linux-gnu/libxcb-image.so.0.0.0
7fbb5481c000-7fbb54a1b000 ---p 00004000 08:06 404813                     /usr/lib/x86_64-linux-gnu/libxcb-image.so.0.0.0
7fbb54a1b000-7fbb54a1c000 r--p 00003000 08:06 404813                     /usr/lib/x86_64-linux-gnu/libxcb-image.so.0.0.0
7fbb54a1c000-7fbb54a1d000 rw-p 00004000 08:06 404813                     /usr/lib/x86_64-linux-gnu/libxcb-image.so.0.0.0
7fbb54a1d000-7fbb54a1e000 r-xp 00000000 08:06 403453                     /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
7fbb54a1e000-7fbb54c1d000 ---p 00001000 08:06 403453                     /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
7fbb54c1d000-7fbb54c1e000 r--p 00000000 08:06 403453                     /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
7fbb54c1e000-7fbb54c1f000 rw-p 00001000 08:06 403453                     /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
7fbb54c1f000-7fbb54c40000 r-xp 00000000 08:06 404837                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7fbb54c40000-7fbb54e3f000 ---p 00021000 08:06 404837                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7fbb54e3f000-7fbb54e40000 r--p 00020000 08:06 404837                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7fbb54e40000-7fbb54e41000 rw-p 00021000 08:06 404837                     /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
7fbb54e41000-7fbb54f76000 r-xp 00000000 08:06 403455                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7fbb54f76000-7fbb55176000 ---p 00135000 08:06 403455                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7fbb55176000-7fbb55177000 r--p 00135000 08:06 403455                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7fbb55177000-7fbb5517b000 rw-p 00136000 08:06 403455                     /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
7fbb5517b000-7fbb5533b000 r-xp 00000000 08:06 137123                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbb5533b000-7fbb5553a000 ---p 001c0000 08:06 137123                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbb5553a000-7fbb5553e000 r--p 001bf000 08:06 137123                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbb5553e000-7fbb55540000 rw-p 001c3000 08:06 137123                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbb55540000-7fbb55544000 rw-p 00000000 00:00 0 
7fbb55544000-7fbb5555a000 r-xp 00000000 08:06 137161                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbb5555a000-7fbb55759000 ---p 00016000 08:06 137161                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbb55759000-7fbb5575a000 rw-p 00015000 08:06 137161                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbb5575a000-7fbb55862000 r-xp 00000000 08:06 137193                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbb55862000-7fbb55a61000 ---p 00108000 08:06 137193                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbb55a61000-7fbb55a62000 r--p 00107000 08:06 137193                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbb55a62000-7fbb55a63000 rw-p 00108000 08:06 137193                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbb55a63000-7fbb55bd5000 r-xp 00000000 08:06 396855                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbb55bd5000-7fbb55dd5000 ---p 00172000 08:06 396855                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbb55dd5000-7fbb55ddf000 r--p 00172000 08:06 396855                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbb55ddf000-7fbb55de1000 rw-p 0017c000 08:06 396855                     /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7fbb55de1000-7fbb55de5000 rw-p 00000000 00:00 0 
7fbb55de5000-7fbb5631a000 r-xp 00000000 08:07 532200                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libQt5Core.so.5.5.1
7fbb5631a000-7fbb56519000 ---p 00535000 08:07 532200                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libQt5Core.so.5.5.1
7fbb56519000-7fbb56528000 rw-p 00534000 08:07 532200                     /home/patryk/programy/Qt5.5.1/5.5/gcc_64/lib/libQt5Core.so.5.5.1
7fbb56528000-7fbb5652b000 rw-p 00000000 00:00 0 
7fbb5652b000-7fbb5653c000 r-xp 00000000 08:07 3292834                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libglLoadGen.so
7fbb5653c000-7fbb5673b000 ---p 00011000 08:07 3292834                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libglLoadGen.so
7fbb5673b000-7fbb5673c000 r--p 00010000 08:07 3292834                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libglLoadGen.so
7fbb5673c000-7fbb5673d000 rw-p 00011000 08:07 3292834                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libglLoadGen.so
7fbb5673d000-7fbb56749000 r-xp 00000000 08:07 3292822                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libzinotutil.so
7fbb56749000-7fbb56948000 ---p 0000c000 08:07 3292822                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libzinotutil.so
7fbb56948000-7fbb56949000 r--p 0000b000 08:07 3292822                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libzinotutil.so
7fbb56949000-7fbb5694a000 rw-p 0000c000 08:07 3292822                    /home/patryk/ClionProjects/ZinotEngine/bin-linux/Debug/libzinotutil.so
7fbb5694a000-7fbb56f0c000 r-xp 00000000 08:06 397927                     /usr/lib/x86_64-linux-gnu/libassimp.so.3.2.0
7fbb56f0c000-7fbb5710c000 ---p 005c2000 08:06 397927                     /usr/lib/x86_64-linux-gnu/libassimp.so.3.2.0
7fbb5710c000-7fbb571d2000 r--p 005c2000 08:06 397927                     /usr/lib/x86_64-linux-gnu/libassimp.so.3.2.0
7fbb571d2000-7fbb571d4000 rw-p 00688000 08:06 397927                     /usr/lib/x86_64-linux-gnu/libassimp.so.3.2.0
7fbb571d4000-7fbb571d9000 rw-p 00000000 00:00 0 
7fbb571d9000-7fbb571e3000 r-xp 00000000 08:06 397680                     /usr/lib/x86_64-linux-gnu/libsfml-system.so.2.3.2
7fbb571e3000-7fbb573e3000 ---p 0000a000 08:06 397680                     /usr/lib/x86_64-linux-gnu/libsfml-system.so.2.3.2
7fbb573e3000-7fbb573e4000 r--p 0000a000 08:06 397680                     /usr/lib/x86_64-linux-gnu/libsfml-system.so.2.3.2
7fbb573e4000-7fbb573e5000 rw-p 0000b000 08:06 397680                     /usr/lib/x86_64-linux-gnu/libsfml-system.so.2.3.2
7fbb573e5000-7fbb57404000 r-xp 00000000 08:06 397684                     /usr/lib/x86_64-linux-gnu/libsfml-window.so.2.3.2
7fbb57404000-7fbb57604000 ---p 0001f000 08:06 397684                     /usr/lib/x86_64-linux-gnu/libsfml-window.so.2.3.2
7fbb57604000-7fbb57605000 r--p 0001f000 08:06 397684                     /usr/lib/x86_64-linux-gnu/libsfml-window.so.2.3.2
7fbb57605000-7fbb57606000 rw-p 00020000 08:06 397684                     /usr/lib/x86_64-linux-gnu/libsfml-window.so.2.3.2
7fbb57606000-7fbb5762c000 r-xp 00000000 08:06 137095                     /lib/x86_64-linux-gnu/ld-2.23.so
7fbb57634000-7fbb57734000 rw-s 10f21f000 00:06 1535                      /dev/dri/card0
7fbb57734000-7fbb57744000 rw-s 10f1f2000 00:06 1535                      /dev/dri/card0
7fbb577ce000-7fbb577cf000 rw-s 10ee34000 00:06 1535                      /dev/dri/card0
7fbb577cf000-7fbb577d3000 rw-s 110aba000 00:06 1535                      /dev/dri/card0
7fbb577d3000-7fbb577da000 rw-s 110ab3000 00:06 1535                      /dev/dri/card0
7fbb577da000-7fbb577eb000 rw-p 00000000 00:00 0 
7fbb577eb000-7fbb57809000 r-xp 00000000 08:06 134079                     /lib/x86_64-linux-gnu/libudev.so.1.6.4
7fbb57809000-7fbb5780a000 r--p 0001d000 08:06 134079                     /lib/x86_64-linux-gnu/libudev.so.1.6.4
7fbb5780a000-7fbb5780b000 rw-p 0001e000 08:06 134079                     /lib/x86_64-linux-gnu/libudev.so.1.6.4
7fbb5780b000-7fbb57810000 rw-p 00000000 00:00 0 
7fbb57828000-7fbb5782b000 rw-p 00000000 00:00 0 
7fbb5782b000-7fbb5782c000 r--p 00025000 08:06 137095                     /lib/x86_64-linux-gnu/ld-2.23.so
7fbb5782c000-7fbb5782d000 rw-p 00026000 08:06 137095                     /lib/x86_64-linux-gnu/ld-2.23.so
7fbb5782d000-7fbb5782e000 rw-p 00000000 00:00 0 
7ffe7acc8000-7ffe7aceb000 rw-p 00000000 00:00 0                          [stack]
7ffe7ad21000-7ffe7ad24000 r--p 00000000 00:00 0                          [vvar]
7ffe7ad24000-7ffe7ad26000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall] 

Starałem się unikać gołych pointerów, a jeśli to tylko do rodzica obiektu, albo tak jak w przypadku MapResMgr tylko wtedy gdy nimi sam szczegółowo (właśnie czy aby na pewno?) nimi zarządzam. Wcześniej miałem w podobny sposób zrobiony zarządce i nie robił takich cyrków. Głowiłem się nad tym dzisiaj i nie mogę wymyślić. Dzieje się to wtedy kiedy metoda Zinot::Window::enterMainLoop() otrzyma komunikat kliknięcia w krzyżyk do zamykania okna. Wtedy usuwane są kolejno klasy MapResMgr->Viewport->Window->Engine i wraca do main().

1
bajos napisał(a):

Próbowałem debuggerem,

A jakby spróbować valgrindem?
Pozdrawiam

2

ja bym zaczął od włączenia AddressSanitizer w kompilatorze, a dopiero potem użył valgrind.

1
  1. jak już masz C++ 11 to używaj shared_ptr/weak_ptr zamiast samemu pisać zliczanie referencji
  2. wpisałeś w cmake swoje lokalne ścieżki
  3. co w cmake z platformą Apple?

Ergo nie sprawdzę ci tego u siebie.

0

@MarekR22, dodałem ten AdressSanitizer.

W pliku MapResMgr.cpp:newRes(...) dostaje błąd:

[1m[31m==4624==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60400000f878 at pc 0x0000004257b7 bp 0x7ffd065c9d80 sp 0x7ffd065c9d70
[1m[0m[1m[34mWRITE of size 8 at 0x60400000f878 thread T0[1m[0m
    #0 0x4257b6 in Zinot::MapResMgr::newRes(unsigned int, Zinot::Resource*, bool)

Z tego co pisze na wiki to jest przekroczenie bufora sterty. Ja mam QMap<uint32_t, /*T =*/ Resource*> za kontener, a metoda .value() iteratora kontenera zwraca T & więc Resource* &, czyli mogę za pomocą iteratora zmienić wartość elementu i to właśnie robię. Moja metoda z błędem:

Resource * MapResMgr::newRes(ResName name, Resource * newRes, bool autoDestroy)
{
   ContentContainer::iterator resIt = content.find(name);

   // If resource exists
   if (resIt != content.end())
   {
      if (autoDestroy)
         delete newRes;

      return nullptr;
   }

   // Else, put new resource
   Resource *& resPtrRef = resIt.value();

   resPtrRef = newRes; /* sanitizer wskazuje dokładnie tą linijkę kodu. Nie wiem czemu przecież nie przeprowadzam
operacji na tablicy, żeby overflow mieć. Po prostu przypisuje nowy wskaźnik.*/
   resPtrRef->setResOwner(this);
   resPtrRef->setName(name);
   resPtrRef->incRefCount();

   return resPtrRef;
}

EDIT:
Skumałem. Pobieram szukam elementu i dostaje iterator. Wskazuje on na koniec bo nie znaleziono (to wiem) więc nie wykonuje się if. Ale element nie istnieje więc nie mogę mu przypisać wartości tylko muszę zrobić insert(key, value). xD #japier

EDIT2:
Teraz wywala tylko błędy nie moje bo z libassimp.so i libX11.so (oj oj oj?). No i te nie zwolnione zasoby bo zakomentowane było usuwanie. Z Assimpa to jeszcze muszę ogarnąć dokładniej bo wczytywanie modeli jest w trakcie, chyba chodzi o nie usunięcie aiScene *.

1

IMO strasznie przekombinowałeś. Popraw to w ten deseń:

class Resource;
typedef std::shared_ptr<Resource> ResourcePtr;
typedef std::shared_ptr<Resource> ResourceWeakPtr;

/** 
 * used to load resource. Reuses existing resource if it i already loaded.
 */
class ResorceLoader {
     map<std::string, ResourceWeakPtr> m_cachedResources;

public:
     /**
      * get existing resource or load it
      */
     auto getResource(const std::string &resName) -> ResourcePtr
     {
           auto found = m_cachedResources.find(resName);
           ResourcePtr result;
           if (found != m_cachedResources.end())
           {
                result = found->second.lock();
           }

           if (!result)
           {
               result = load(resName);
           }
           return result;
     }

private:
     /* loads resource and stores weak reference */
     auto load(const std::string &resName) -> ResourcePtr
     {
            auto result = std::make_shared(Resource, resName);
            m_cachedResources[resName] = result;
            return result;
     }
};

Zauważ, że jeśli nikt nie używa zasobu to zostanie on automatycznie zwolniony, bo mapa zawiera słabą referencję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1