Skip to content

Instantly share code, notes, and snippets.

@tk3
Last active December 10, 2015 12:28
Show Gist options
  • Save tk3/4434088 to your computer and use it in GitHub Desktop.
Save tk3/4434088 to your computer and use it in GitHub Desktop.
#!mruby
db = SQLite3::Database.new('example/foo.db')
begin
db.execute_batch(
'drop table foo;' + \
'drop table bar;' \
)
rescue RuntimeError
ensure
db.execute_batch( \
'create table foo(id integer primary key, text text);' + \
'create table bar(id integer primary key, text text);' \
)
end
db.execute_batch('delete from foo')
db.close()
$ valgrind ../../../bin/mruby example/abcd.rb
==75325== Memcheck, a memory error detector
==75325== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==75325== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==75325== Command: ../../../bin/mruby example/abcd.rb
==75325==
==75325== WARNING: Support on MacOS 10.8 is experimental and mostly broken.
==75325== WARNING: Expect incorrect results, assertions and crashes.
==75325== WARNING: In particular, Memcheck on 32-bit programs will fail to
==75325== WARNING: detect any errors associated with heap-allocated data.
==75325==
==75325== Conditional jump or move depends on uninitialised value(s)
==75325== at 0x1D0B9: sqlite3RunParser (in /usr/lib/libsqlite3.dylib)
==75325== by 0x1C8B7: sqlite3Prepare (in /usr/lib/libsqlite3.dylib)
==75325== by 0x1C232: sqlite3LockAndPrepare (in /usr/lib/libsqlite3.dylib)
==75325== by 0x9673E: sqlite3_prepare_v2 (in /usr/lib/libsqlite3.dylib)
==75325== by 0x100050263: mrb_sqlite3_database_execute_batch (mrb_sqlite3.c:273)
==75325== by 0x10002F55A: mrb_run (vm.c:850)
==75325== by 0x100046456: load_exec (parse.y:4888)
==75325== by 0x10004F84C: mrb_load_file_cxt (parse.y:4896)
==75325== by 0x100000E5E: main (mruby.c:284)
==75325==
==75325== Conditional jump or move depends on uninitialised value(s)
==75325== at 0x10005036D: mrb_sqlite3_database_execute_batch (mrb_sqlite3.c:271)
==75325== by 0x10002F55A: mrb_run (vm.c:850)
==75325== by 0x100046456: load_exec (parse.y:4888)
==75325== by 0x10004F84C: mrb_load_file_cxt (parse.y:4896)
==75325== by 0x100000E5E: main (mruby.c:284)
==75325==
==75325== Conditional jump or move depends on uninitialised value(s)
==75325== at 0x10005036D: mrb_sqlite3_database_execute_batch (mrb_sqlite3.c:271)
==75325== by 0x10002F55A: mrb_run (vm.c:850)
==75325== by 0x10002F003: mrb_run (vm.c:258)
==75325== by 0x100046456: load_exec (parse.y:4888)
==75325== by 0x10004F84C: mrb_load_file_cxt (parse.y:4896)
==75325== by 0x100000E5E: main (mruby.c:284)
==75325==
==75325== Use of uninitialised value of size 8
==75325== at 0x1ED89: sqlite3GetToken (in /usr/lib/libsqlite3.dylib)
==75325== by 0x1D19F: sqlite3RunParser (in /usr/lib/libsqlite3.dylib)
==75325== by 0x1C8B7: sqlite3Prepare (in /usr/lib/libsqlite3.dylib)
==75325== by 0x1C232: sqlite3LockAndPrepare (in /usr/lib/libsqlite3.dylib)
==75325== by 0x9673E: sqlite3_prepare_v2 (in /usr/lib/libsqlite3.dylib)
==75325== by 0x100050263: mrb_sqlite3_database_execute_batch (mrb_sqlite3.c:273)
==75325== by 0x10002F55A: mrb_run (vm.c:850)
==75325== by 0x100046456: load_exec (parse.y:4888)
==75325== by 0x10004F84C: mrb_load_file_cxt (parse.y:4896)
==75325== by 0x100000E5E: main (mruby.c:284)
==75325==
==75325== Conditional jump or move depends on uninitialised value(s)
==75325== at 0x1D1C9: sqlite3RunParser (in /usr/lib/libsqlite3.dylib)
==75325== by 0x1C8B7: sqlite3Prepare (in /usr/lib/libsqlite3.dylib)
==75325== by 0x1C232: sqlite3LockAndPrepare (in /usr/lib/libsqlite3.dylib)
==75325== by 0x9673E: sqlite3_prepare_v2 (in /usr/lib/libsqlite3.dylib)
==75325== by 0x100050263: mrb_sqlite3_database_execute_batch (mrb_sqlite3.c:273)
==75325== by 0x10002F55A: mrb_run (vm.c:850)
==75325== by 0x100046456: load_exec (parse.y:4888)
==75325== by 0x10004F84C: mrb_load_file_cxt (parse.y:4896)
==75325== by 0x100000E5E: main (mruby.c:284)
==75325==
==75325== Invalid read of size 4
==75325== at 0xA908C: sqlite3_close (in /usr/lib/libsqlite3.dylib)
==75325== by 0x100050AEC: mrb_sqlite3_database_free (mrb_sqlite3.c:31)
==75325== by 0x100013001: obj_free (gc.c:560)
==75325== by 0x1000139F1: mrb_free_heap (gc.c:300)
==75325== by 0x100022262: mrb_close (state.c:107)
==75325== by 0x100000F1F: main (mruby.c:163)
==75325== Address 0x1000ff440 is 80 bytes inside a block of size 792 free'd
==75325== at 0x5764: malloc_zone_free (in /usr/local/Cellar/valgrind/3.8.1/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==75325== by 0xA9A11: sqlite3_close (in /usr/lib/libsqlite3.dylib)
==75325== by 0x100050450: mrb_sqlite3_database_close (mrb_sqlite3.c:316)
==75325== by 0x10002F55A: mrb_run (vm.c:850)
==75325== by 0x100046456: load_exec (parse.y:4888)
==75325== by 0x10004F84C: mrb_load_file_cxt (parse.y:4896)
==75325== by 0x100000E5E: main (mruby.c:284)
==75325==
==75325==
==75325== HEAP SUMMARY:
==75325== in use at exit: 58,846 bytes in 354 blocks
==75325== total heap usage: 2,431 allocs, 2,077 frees, 520,068 bytes allocated
==75325==
==75325== LEAK SUMMARY:
==75325== definitely lost: 8,664 bytes in 16 blocks
==75325== indirectly lost: 1,168 bytes in 5 blocks
==75325== possibly lost: 4,821 bytes in 56 blocks
==75325== still reachable: 44,193 bytes in 277 blocks
==75325== suppressed: 0 bytes in 0 blocks
==75325== Rerun with --leak-check=full to see details of leaked memory
==75325==
==75325== For counts of detected and suppressed errors, rerun with: -v
==75325== Use --track-origins=yes to see where uninitialised values come from
==75325== ERROR SUMMARY: 9 errors from 6 contexts (suppressed: 0 from 0)
$ ../../../bin/mruby example/abcd.rb
trace:
[0] example/abcd.rb:18
example/abcd.rb:18: no such table: foo? (RuntimeError)
$ ../../../bin/mruby example/abcd.rb
trace:
[0] example/abcd.rb:18
example/abcd.rb:18: no such table: fooP (RuntimeError)
$ ../../../bin/mruby example/abcd.rb
trace:
[0] example/abcd.rb:18
example/abcd.rb:18: unrecognized token: "`" (RuntimeError)
$ ../../../bin/mruby example/abcd.rb
trace:
[0] example/abcd.rb:18
example/abcd.rb:18: no such table: fooP (RuntimeError)
$ ../../../bin/mruby example/abcd.rb
trace:
[0] example/abcd.rb:18
example/abcd.rb:18: unrecognized token: "@" (RuntimeError)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment