Last active
December 10, 2015 12:28
-
-
Save tk3/4434088 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!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() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ 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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ ../../../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