Closed colorhook closed 3 years ago
I can reproduce this with Rust nightly, but with two changes I made to the project:
bundled
to sdl2It fails with nearly the same stack trace:
proveit(1373,0x10adb5dc0) malloc: *** error for object 0x200000000000000: pointer being freed was not allocated
proveit(1373,0x10adb5dc0) malloc: *** set a breakpoint in malloc_error_break to debug
and
Process: proveit [1373]
Path: /Users/USER/*/proveit
Identifier: proveit
Version: 0
Code Type: X86-64 (Native)
Parent Process: zsh [1050]
Responsible: Terminal [1009]
User ID: 501
Date/Time: 2020-04-15 10:26:34.249 +0200
OS Version: Mac OS X 10.15.4 (19E287)
Report Version: 12
Anonymous UUID: D0CAE850-8011-B9E2-10E5-9B77DDA98C74
Time Awake Since Boot: 1200 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Application Specific Information:
abort() called
proveit(1373,0x10adb5dc0) malloc: *** error for object 0x200000000000000: pointer being freed was not allocated
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff7003333a __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff700efe60 pthread_kill + 430
2 libsystem_c.dylib 0x00007fff6ffba808 abort + 120
3 libsystem_malloc.dylib 0x00007fff700b050b malloc_vreport + 548
4 libsystem_malloc.dylib 0x00007fff700b340f malloc_report + 151
5 proveit 0x0000000106771f75 operator delete(void*) + 21 (new.cpp:133)
6 proveit 0x0000000105f3fa6d SkSL::IRGenerator::convertVarDeclarations(SkSL::ASTNode const&, SkSL::Variable::Storage) + 4141
7 proveit 0x0000000105f46e56 SkSL::IRGenerator::convertInterfaceBlock(SkSL::ASTNode const&) + 342
8 proveit 0x0000000105f5112d SkSL::IRGenerator::convertProgram(SkSL::Program::Kind, char const*, unsigned long, SkSL::SymbolTable&, std::__1::vector<std::__1::unique_ptr<SkSL::ProgramElement, std::__1::default_delete<SkSL::ProgramElement> >, std::__1::allocator<std::__1::unique_ptr<SkSL::ProgramElement, std::__1::default_delete<SkSL::ProgramElement> > > >*) + 541
9 proveit 0x0000000105f2c9e0 SkSL::Compiler::processIncludeFile(SkSL::Program::Kind, char const*, unsigned long, std::__1::shared_ptr<SkSL::SymbolTable>, std::__1::vector<std::__1::unique_ptr<SkSL::ProgramElement, std::__1::default_delete<SkSL::ProgramElement> >, std::__1::allocator<std::__1::unique_ptr<SkSL::ProgramElement, std::__1::default_delete<SkSL::ProgramElement> > > >*, std::__1::shared_ptr<SkSL::SymbolTable>*) + 432
10 proveit 0x0000000105f2c4df SkSL::Compiler::Compiler(SkSL::Compiler::Flags) + 5503
11 proveit 0x00000001060aa11a GrGLContext::compiler() const + 42
12 proveit 0x00000001060c4839 GrSkSLtoGLSL(GrGLContext const&, SkSL::Program::Kind, SkSL::String const&, SkSL::Program::Settings const&, SkSL::String*, GrContextOptions::ShaderErrorHandler*) + 41
13 proveit 0x00000001060c1107 GrGLProgramBuilder::finalize(GrGLPrecompiledProgram const*) + 2215
14 proveit 0x00000001060c07f5 GrGLProgramBuilder::CreateProgram(GrRenderTarget*, GrProgramInfo const&, GrProgramDesc*, GrGLGpu*, GrGLPrecompiledProgram const*) + 1429
15 proveit 0x00000001060b7744 GrGLGpu::ProgramCache::refProgram(GrGLGpu*, GrRenderTarget*, GrProgramInfo const&) + 356
16 proveit 0x00000001060af95f GrGLGpu::flushGLState(GrRenderTarget*, GrProgramInfo const&) + 47
17 proveit 0x00000001060b14cb GrGLGpu::draw(GrRenderTarget*, GrProgramInfo const&, GrMesh const*, int) + 75
18 proveit 0x0000000105f9e8c9 GrOpsRenderPass::draw(GrProgramInfo const&, GrMesh const*, int, SkRect const&) + 105
19 proveit 0x0000000105f9d05b GrOpFlushState::executeDrawsAndUploadsForMeshDrawOp(GrOp const*, SkRect const&, GrPipeline const*) + 123
20 proveit 0x0000000105ff4d84 (anonymous namespace)::FillRectOp::onExecute(GrOpFlushState*, SkRect const&) + 116
21 proveit 0x0000000105fa0377 GrOp::execute(GrOpFlushState*, SkRect const&) + 167
22 proveit 0x0000000105fa0210 GrOpsTask::onExecute(GrOpFlushState*) + 1008
23 proveit 0x0000000105f91a9b GrDrawingManager::executeRenderTasks(int, int, GrOpFlushState*, int*) + 203
24 proveit 0x0000000105f914ee GrDrawingManager::flush(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrPrepareForExternalIORequests const&) + 1838
25 proveit 0x0000000105f91d83 GrDrawingManager::flushSurfaces(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&) + 115
26 proveit 0x0000000105fb5c2f GrRenderTargetContext::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&) + 287
27 proveit 0x0000000106065a05 SkGpuDevice::flush() + 37
28 proveit 0x0000000105d9c281 skia_bindings::bindings::SkCanvas::flush::hb7eb0d388094ecde + 17 (bindings.rs:9241)
29 proveit 0x0000000105d9ce72 skia_safe::core::canvas::Canvas::flush::h43c0efa3d71caa75 + 34
30 proveit 0x0000000105d6bc4a proveit::main::h44cca76e4466a5d4 + 8938 (main.rs:354)
31 proveit 0x0000000105d6461d std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h4ce5f660503ace59 + 29 (rt.rs:67)
32 proveit 0x0000000106795604 std::rt::lang_start_internal::h70084482207aef9f + 564 (rt.rs:51)
33 proveit 0x0000000105d645f1 std::rt::lang_start::h828ddb3f6bd9f333 + 65 (rt.rs:67)
34 proveit 0x0000000105d6c4c2 main + 34
35 libdyld.dylib 0x00007fff6feebcc9 start + 1
I would suspect that this is a similar problem like in #299: a mixup of same named functions pulled from different native C / C++ libraries.
Hmm, with SKIA_DEBUG=1
the failure seems to be detected slightly earlier in the constructor of SkSL::Compiler::Compiler
:
../../../../../../../rust-skia/skia-bindings/skia/src/sksl/SkSLCompiler.cpp:1711: fatal error: "assert(fSource)"
Process: proveit [5349]
Path: /Users/USER/*/proveit
Identifier: proveit
Version: 0
Code Type: X86-64 (Native)
Parent Process: zsh [1050]
Responsible: Terminal [1009]
User ID: 501
Date/Time: 2020-04-15 11:37:18.785 +0200
OS Version: Mac OS X 10.15.4 (19E287)
Report Version: 12
Anonymous UUID: D0CAE850-8011-B9E2-10E5-9B77DDA98C74
Time Awake Since Boot: 5500 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [5349]
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 proveit 0x0000000107c1b455 sk_abort_no_print() + 5 (SkMemory_malloc.cpp:45)
1 proveit 0x0000000107b6a9c2 SkSL::Compiler::position(int)::$_21::operator()() const + 50 (SkSLCompiler.cpp:1711)
2 proveit 0x0000000107b6a8f3 SkSL::Compiler::position(int) + 51 (SkSLCompiler.cpp:1712)
3 proveit 0x0000000107b6aa6e SkSL::Compiler::error(int, SkSL::String) + 62 (SkSLCompiler.cpp:1728)
4 proveit 0x0000000107bf3e56 SkSL::SymbolTable::addWithoutOwnership(SkSL::StringFragment, SkSL::Symbol const*) + 1110 (SkSLSymbolTable.cpp:104)
5 proveit 0x0000000107b5d446 SkSL::Compiler::Compiler(SkSL::Compiler::Flags) + 2902 (SkSLCompiler.cpp:134)
6 proveit 0x0000000107b624ab SkSL::Compiler::Compiler(SkSL::Compiler::Flags) + 27 (SkSLCompiler.cpp:292)
7 proveit 0x0000000107f46da7 GrGLContext::compiler() const + 55 (GrGLContext.cpp:99)
8 proveit 0x0000000107f955f6 GrSkSLtoGLSL(GrGLContext const&, SkSL::Program::Kind, SkSL::String const&, SkSL::Program::Settings const&, SkSL::String*, GrContextOptions::ShaderErrorHandler*) + 70 (GrGLShaderStringBuilder.cpp:37)
9 proveit 0x0000000107f8dbc2 GrGLProgramBuilder::finalize(GrGLPrecompiledProgram const*) + 2642 (GrGLProgramBuilder.cpp:324)
10 proveit 0x0000000107f8d070 GrGLProgramBuilder::CreateProgram(GrRenderTarget*, GrProgramInfo const&, GrProgramDesc*, GrGLGpu*, GrGLPrecompiledProgram const*) + 448 (GrGLProgramBuilder.cpp:71)
11 proveit 0x0000000107f6f46c GrGLGpu::ProgramCache::refProgram(GrGLGpu*, GrRenderTarget*, GrProgramInfo const&) + 572 (GrGLGpuProgramCache.cpp:75)
12 proveit 0x0000000107f54809 GrGLGpu::flushGLState(GrRenderTarget*, GrProgramInfo const&) + 57 (GrGLGpu.cpp:1821)
13 proveit 0x0000000107f5904b GrGLGpu::draw(GrRenderTarget*, GrProgramInfo const&, GrMesh const*, int) + 91 (GrGLGpu.cpp:2369)
14 proveit 0x0000000107f697b8 GrGLOpsRenderPass::onDraw(GrProgramInfo const&, GrMesh const*, int, SkRect const&) + 56 (GrGLOpsRenderPass.h:55)
15 proveit 0x0000000107c91298 GrOpsRenderPass::draw(GrProgramInfo const&, GrMesh const*, int, SkRect const&) + 536 (GrOpsRenderPass.cpp:64)
16 proveit 0x0000000107c8c331 GrOpFlushState::executeDrawsAndUploadsForMeshDrawOp(GrOp const*, SkRect const&, GrPipeline const*) + 993 (GrOpFlushState.cpp:57)
17 proveit 0x0000000107d6cc91 (anonymous namespace)::FillRectOp::onExecute(GrOpFlushState*, SkRect const&) + 193 (GrFillRectOp.cpp:288)
18 proveit 0x0000000107c94f41 GrOp::execute(GrOpFlushState*, SkRect const&) + 257 (GrOp.h:180)
19 proveit 0x0000000107c94975 GrOpsTask::onExecute(GrOpFlushState*) + 1749 (GrOpsTask.cpp:587)
20 proveit 0x0000000107c60311 GrRenderTask::execute(GrOpFlushState*) + 33 (GrRenderTask.h:38)
21 proveit 0x0000000107c5fdd6 GrDrawingManager::executeRenderTasks(int, int, GrOpFlushState*, int*) + 358 (GrDrawingManager.cpp:452)
22 proveit 0x0000000107c5f08b GrDrawingManager::flush(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&, GrPrepareForExternalIORequests const&) + 2779 (GrDrawingManager.cpp:364)
23 proveit 0x0000000107c605f4 GrDrawingManager::flushSurfaces(GrSurfaceProxy**, int, SkSurface::BackendSurfaceAccess, GrFlushInfo const&) + 372 (GrDrawingManager.cpp:520)
24 proveit 0x0000000107cd4650 GrDrawingManager::flushSurface(GrSurfaceProxy*, SkSurface::BackendSurfaceAccess, GrFlushInfo const&) + 48 (GrDrawingManager.h:102)
25 proveit 0x0000000107cd22a1 GrRenderTargetContext::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&) + 433 (GrRenderTargetContext.cpp:2178)
26 proveit 0x0000000107e7678f SkGpuDevice::flush(SkSurface::BackendSurfaceAccess, GrFlushInfo const&) + 111 (SkGpuDevice.cpp:1609)
27 proveit 0x0000000107e76716 SkGpuDevice::flush() + 70 (SkGpuDevice.cpp:1602)
28 proveit 0x00000001077ad8b4 SkCanvas::onFlush() + 52 (SkCanvas.cpp:621)
29 proveit 0x00000001077ad879 SkCanvas::flush() + 25 (SkCanvas.cpp:614)
30 proveit 0x00000001077657c1 skia_bindings::bindings::SkCanvas::flush::hb71c2c7340939f6e + 17 (bindings.rs:9249)
31 proveit 0x000000010776b722 skia_safe::core::canvas::Canvas::flush::h9010b335e7e60a7e + 34
32 proveit 0x00000001077333aa proveit::main::hd1eb25342598a824 + 8938 (main.rs:354)
33 proveit 0x00000001077374dd std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::h23b9d93a9773bc5f + 29 (rt.rs:67)
34 proveit 0x00000001086ca0c4 std::rt::lang_start_internal::h70084482207aef9f + 564 (rt.rs:51)
35 proveit 0x00000001077374b1 std::rt::lang_start::hd0f10a187b88d7ac + 65 (rt.rs:67)
36 proveit 0x0000000107733c22 main + 34
37 libdyld.dylib 0x00007fff6feebcc9 start + 1
Closing this, as the original reproduction repository is gone (https://github.com/michael-swan/proveit). May reopen if that problem is an issue with the latest rust-skia versions.
After using v8 and sdl2 together, segmentation fault occur.
loop
canvas.draw_xxx
method call in window renderloop
, program is ok too.then, I found a similar demo and clone the repo: https://github.com/michael-swan/proveit
just add one line code
and get error