after updating a minimal application using GTK2 and CEF from version 3.1750 to 3.2171, I get the following crash:
free(): invalid pointer: 0x00001d18c8742000 ***
Program received signal SIGABRT, Aborted.
0x00007ffff56ff187 in raise () from /lib64/libc.so.6
This crash seems to happen, when things have to be redraw eg. when resizing, calling Frame->loadUrl, ...
Some more information:
- I'm calling cef_do_message_loop_work within a gtk main loop, but the same crash happens with cef_run_message_loop, too.
- release libcef.so is used, the debug one crashes with
- Code: Select all
memory allocation bug: object at 0x7fffe7f60ec0 has never been allocated
Program received signal SIGSEGV, Segmentation fault.
tcmalloc::Abort() () at ../../third_party/tcmalloc/chromium/src/base/abort.cc:15
- the program is written in Pascal, therefore I only use the C api
- sandbox is disabled
The full backtrace looks like this:
(gdb) backtrace
#0 0x00007ffff56ff187 in raise () at /lib64/libc.so.6
#1 0x00007ffff5700538 in abort () at /lib64/libc.so.6
#2 0x00007ffff573d0c4 in () at /lib64/libc.so.6
#3 0x00007ffff574292e in malloc_printerr () at /lib64/libc.so.6
#4 0x00007fffe4b3b125 in SkMallocPixelRef::~SkMallocPixelRef() () at ./libcef.so
#5 0x00007fffe4afd12f in SkBitmap::~SkBitmap() () at ./libcef.so
#6 0x00007fffe4b007e7 in SkBitmapDevice::~SkBitmapDevice() () at ./libcef.so
#7 0x00007fffe4b1c640 in SkCanvas::internalRestore() () at ./libcef.so
#8 0x00007fffe4b1c467 in SkCanvas::~SkCanvas() () at ./libcef.so
#9 0x00007fffe491b6d9 in SkCanvas::~SkCanvas() () at ./libcef.so
#10 0x00007fffe5f7a376 in cc::BitmapContentLayerUpdater::PrepareToUpdate(gfx::Size const&, gfx::Rect const&, gfx::Size const&, float, float) () at ./libcef.so
#11 0x00007fffe5f4fa7d in cc::TiledLayer::UpdateTileTextures(gfx::Rect const&, gfx::Rect const&, int, int, int, int, cc::ResourceUpdateQueue*, cc::OcclusionTracker<cc::Layer> const*) () at ./libcef.so
#12 0x00007fffe5f4f77e in cc::TiledLayer::UpdateTiles(int, int, int, int, cc::ResourceUpdateQueue*, cc::OcclusionTracker<cc::Layer> const*, bool*) () at ./libcef.so
#13 0x00007fffe5f50a0a in cc::TiledLayer::Update(cc::ResourceUpdateQueue*, cc::OcclusionTracker<cc::Layer> const*) () at ./libcef.so
#14 0x00007fffe5fcc1ca in cc::LayerTreeHost::PaintLayerContents(cc::RenderSurfaceLayerList const&, cc::ResourceUpdateQueue*, bool*, bool*) () at ./libcef.so
#15 0x00007fffe5fcb987 in cc::LayerTreeHost::UpdateLayers(cc::Layer*, cc::ResourceUpdateQueue*) () at ./libcef.so
#16 0x00007fffe5fcb510 in cc::LayerTreeHost::UpdateLayers(cc::ResourceUpdateQueue*) () at ./libcef.so
#17 0x00007fffe5fed1e6 in cc::SingleThreadProxy::DoCommit(cc::BeginFrameArgs const&) () at ./libcef.so
#18 0x00007fffe5fee89c in cc::SingleThreadProxy::CompositeImmediately(base::TimeTicks) () at ./libcef.so
#19 0x00007fffe65bc09e in ui::Compositor::Draw() () at ./libcef.so
#20 0x00007fffe47f3302 in base::debug::TaskAnnotator::RunTask(char const*, char const*, base::PendingTask const&) () at ./libcef.so
#21 0x00007fffe481e172 in base::MessageLoop::RunTask(base::PendingTask const&) () at ./libcef.so
#22 0x00007fffe481e6dc in base::MessageLoop::DoWork() () at ./libcef.so
#23 0x00007fffe47e2619 in base::MessagePumpGlib::Run(base::MessagePump::Delegate*) () at ./libcef.so
#24 0x00007fffe4832114 in base::RunLoop::Run() () at ./libcef.so
#25 0x00007fffe471522a in CefBrowserMessageLoop::DoMessageLoopIteration() () at ./libcef.so
#26 0x000000000040a349 in IDLE (WIDGET=0x965040) at minimal.lpr:39
---Type <return> to continue, or q <return> to quit---
#27 0x00007ffff736d8e5 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#28 0x00007ffff736dc48 in () at /usr/lib64/libglib-2.0.so.0
#29 0x00007ffff736dcec in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#30 0x00007fffe47e2672 in base::MessagePumpGlib::Run(base::MessagePump::Delegate*) () at ./libcef.so
#31 0x00007fffe4832114 in base::RunLoop::Run() () at ./libcef.so
#32 0x00007fffe481d9ca in base::MessageLoop::Run() () at ./libcef.so
#33 0x000000000040ade3 in main () at minimal.lpr:239
Is this a known bug and what could be the reason? Could this be related to tcmalloc or the change GTK -> Aura?
The only thing I changed compared to the version for 3.1750, is the way CEF is embedded into GTK...
Any help would be greatly appreciated.
Regards