gpt4 book ai didi

java - 运行 sqlite 语句时 JRE 崩溃

转载 作者:IT王子 更新时间:2023-10-29 06:29:31 25 4
gpt4 key购买 nike

我从来没有见过这样的事情。我花了一个多小时将它精简为我能得到的最简单的。

import java.io.File;
import java.sql.*;

public class Test {
private static final String DB_PATH = "test.db";

public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("org.sqlite.JDBC");
new File(DB_PATH).delete();

Connection conn = null;
Statement s = null;
try {
conn = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH);

s = conn.createStatement();
s.execute("CREATE TABLE person (id integer primary key, name text)");
s.execute("CREATE VIEW person_view AS SELECT p.id, p.name FROM person p");
s.execute(""
+ "CREATE TRIGGER person_view_delete INSTEAD OF DELETE ON person_view "
+ "BEGIN delete from person where id = old.id; END"
);
s.executeUpdate("INSERT INTO person (id, name) VALUES (42, 'hi')");

System.out.println("After this line...");
s.executeUpdate("DELETE FROM person_view WHERE id = 42");
System.out.println("And before this line...");
} finally {
try {
if (s != null) s.close();
} finally {
if (conn != null) conn.close();
}
}
}
}

这每次都会崩溃。日志文件:

#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x76f09b69, pid=3148, tid=5752
#
# JRE version: 7.0_15-b03
# Java VM: Java HotSpot(TM) Client VM (23.7-b01 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [msvcrt.dll+0x9b69] memcpy+0x259
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

--------------- T H R E A D ---------------

Current thread (0x0076a800): JavaThread "main" [_thread_in_native, id=5752, stack(0x00d70000,0x00dc0000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

Registers:
EAX=0x00000002, EBX=0x00000054, ECX=0x00000000, EDX=0x00000002
ESP=0x00dbefb0, EBP=0x00dbefb8, ESI=0x00000000, EDI=0x00dbf2a0
EIP=0x76f09b69, EFLAGS=0x00010293

Top of Stack: (sp=0x00dbefb0)
0x00dbefb0: 00dbf280 00000002 00dbefe8 6c2c6d44
0x00dbefc0: 00dbf2a0 00000000 00000002 6c2e5daa
0x00dbefd0: 00000094 0523dcd0 00dbf108 00000054
0x00dbefe0: 00000000 0523cd00 00dbf258 6c2c6b44
0x00dbeff0: 00dbf280 00000000 00000002 6c2c6d44
0x00dbf000: 00dbf2f7 6c317342 00000001 00000000
0x00dbf010: 00000005 00000000 00000005 00000000
0x00dbf020: 00000007 6c317342 00dbf298 6c2c5bae

Instructions: (pc=0x76f09b69)
0x76f09b49: 03 88 47 03 8a 46 02 88 47 02 8a 46 01 88 47 01
0x76f09b59: 8b 45 08 5e 5f c9 c3 f3 a5 ff 24 95 b8 99 f0 76
0x76f09b69: 8a 06 88 07 8a 46 01 88 47 01 8b 45 08 5e 5f c9
0x76f09b79: c3 83 3d 44 00 fa 76 00 0f 84 b5 fd ff ff 57 56


Register to memory mapping:

EAX=0x00000002 is an unknown value
EBX=0x00000054 is an unknown value
ECX=0x00000000 is an unknown value
EDX=0x00000002 is an unknown value
ESP=0x00dbefb0 is pointing into the stack for thread: 0x0076a800
EBP=0x00dbefb8 is pointing into the stack for thread: 0x0076a800
ESI=0x00000000 is an unknown value
EDI=0x00dbf2a0 is pointing into the stack for thread: 0x0076a800


Stack: [0x00d70000,0x00dc0000], sp=0x00dbefb0, free space=315k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [msvcrt.dll+0x9b69] memcpy+0x259
C [libsqlitejdbc-6544525787688936286.lib+0x6d44] Java_org_sqlite_NativeDB_column_1metadata+0x46ac
C [libsqlitejdbc-6544525787688936286.lib+0x6b44] Java_org_sqlite_NativeDB_column_1metadata+0x44ac
C [libsqlitejdbc-6544525787688936286.lib+0x6e5d] Java_org_sqlite_NativeDB_column_1metadata+0x47c5
C [libsqlitejdbc-6544525787688936286.lib+0x6ea5] Java_org_sqlite_NativeDB_column_1metadata+0x480d
C [libsqlitejdbc-6544525787688936286.lib+0x37a21] Java_org_sqlite_NativeDB_column_1metadata+0x35389
C [libsqlitejdbc-6544525787688936286.lib+0x39b3e] Java_org_sqlite_NativeDB_column_1metadata+0x374a6
C [libsqlitejdbc-6544525787688936286.lib+0x228ab] Java_org_sqlite_NativeDB_column_1metadata+0x20213
C [libsqlitejdbc-6544525787688936286.lib+0x3a05f] Java_org_sqlite_NativeDB_column_1metadata+0x379c7
C [libsqlitejdbc-6544525787688936286.lib+0x3a138] Java_org_sqlite_NativeDB_column_1metadata+0x37aa0
C [libsqlitejdbc-6544525787688936286.lib+0x3a506] Java_org_sqlite_NativeDB_column_1metadata+0x37e6e
C [libsqlitejdbc-6544525787688936286.lib+0x2e694] Java_org_sqlite_NativeDB_column_1metadata+0x2bffc
C [libsqlitejdbc-6544525787688936286.lib+0x2e924] Java_org_sqlite_NativeDB_column_1metadata+0x2c28c
C [libsqlitejdbc-6544525787688936286.lib+0x4331b] Java_org_sqlite_NativeDB_column_1metadata+0x40c83
C [libsqlitejdbc-6544525787688936286.lib+0x446c3] Java_org_sqlite_NativeDB_column_1metadata+0x4202b
C [libsqlitejdbc-6544525787688936286.lib+0x45200] Java_org_sqlite_NativeDB_column_1metadata+0x42b68
C [libsqlitejdbc-6544525787688936286.lib+0x35e54] Java_org_sqlite_NativeDB_column_1metadata+0x337bc
C [libsqlitejdbc-6544525787688936286.lib+0x3613d] Java_org_sqlite_NativeDB_column_1metadata+0x33aa5
C [libsqlitejdbc-6544525787688936286.lib+0x36219] Java_org_sqlite_NativeDB_column_1metadata+0x33b81
C [libsqlitejdbc-6544525787688936286.lib+0x1b1e] Java_org_sqlite_NativeDB_prepare+0x3c
j org.sqlite.NativeDB.prepare(Ljava/lang/String;)J+0
j org.sqlite.DB.prepare(Lorg/sqlite/Stmt;)V+21
j org.sqlite.Stmt.executeUpdate(Ljava/lang/String;)I+16
j Test.main([Ljava/lang/String;)V+83
v ~StubRoutines::call_stub
V [jvm.dll+0x12a34a]
V [jvm.dll+0x1d968e]
V [jvm.dll+0x12a3cd]
V [jvm.dll+0xaede4]
V [jvm.dll+0xb9157]
C [javaw.exe+0x206c]
C [javaw.exe+0xa5a1]
C [javaw.exe+0xa62b]
C [kernel32.dll+0x133aa] BaseThreadInitThunk+0x12
C [ntdll.dll+0x39ef2] RtlInitializeExceptionChain+0x63
C [ntdll.dll+0x39ec5] RtlInitializeExceptionChain+0x36

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.sqlite.NativeDB.prepare(Ljava/lang/String;)J+0
j org.sqlite.DB.prepare(Lorg/sqlite/Stmt;)V+21
j org.sqlite.Stmt.executeUpdate(Ljava/lang/String;)I+16
j Test.main([Ljava/lang/String;)V+83
v ~StubRoutines::call_stub

--------------- P R O C E S S ---------------

Java Threads: ( => current thread )
0x00e8e800 JavaThread "Service Thread" daemon [_thread_blocked, id=5104, stack(0x04a30000,0x04a80000)]
0x00e80c00 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=5128, stack(0x04450000,0x044a0000)]
0x00e7f800 JavaThread "Attach Listener" daemon [_thread_blocked, id=6088, stack(0x04930000,0x04980000)]
0x00e7c800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4676, stack(0x047b0000,0x04800000)]
0x00e69c00 JavaThread "Finalizer" daemon [_thread_blocked, id=5528, stack(0x04580000,0x045d0000)]
0x00e65000 JavaThread "Reference Handler" daemon [_thread_blocked, id=1184, stack(0x044d0000,0x04520000)]
=>0x0076a800 JavaThread "main" [_thread_in_native, id=5752, stack(0x00d70000,0x00dc0000)]

Other Threads:
0x00e63400 VMThread [stack: 0x045d0000,0x04620000] [id=1656]
0x00ea9800 WatcherThread [stack: 0x048a0000,0x048f0000] [id=5976]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
def new generation total 4928K, used 1106K [0x23f00000, 0x24450000, 0x29450000)
eden space 4416K, 25% used [0x23f00000, 0x24014aa8, 0x24350000)
from space 512K, 0% used [0x24350000, 0x24350000, 0x243d0000)
to space 512K, 0% used [0x243d0000, 0x243d0000, 0x24450000)
tenured generation total 10944K, used 0K [0x29450000, 0x29f00000, 0x33f00000)
the space 10944K, 0% used [0x29450000, 0x29450000, 0x29450200, 0x29f00000)
compacting perm gen total 12288K, used 580K [0x33f00000, 0x34b00000, 0x37f00000)
the space 12288K, 4% used [0x33f00000, 0x33f91090, 0x33f91200, 0x34b00000)
ro space 10240K, 45% used [0x37f00000, 0x38387290, 0x38387400, 0x38900000)
rw space 12288K, 54% used [0x38900000, 0x38f8ace8, 0x38f8ae00, 0x39500000)

Card table byte_map: [0x00ec0000,0x00f70000] byte_map_base: 0x00da0800

Polling page: 0x004d0000

Code Cache [0x02450000, 0x024f8000, 0x04450000)
total_blobs=186 nmethods=38 adapters=84 free_code_cache=32107Kb largest_free_block=32877568

Compilation events (10 events):
Event: 0.288 Thread 0x00e80c00 33 sun.security.provider.SHA::implCompress (491 bytes)
Event: 0.290 Thread 0x00e80c00 nmethod 33 0x024f19c8 code [0x024f1b20, 0x024f20ac]
Event: 0.290 Thread 0x00e80c00 34 sun.nio.cs.SingleByte$Encoder::encode (114 bytes)
Event: 0.291 Thread 0x00e80c00 nmethod 34 0x024f2888 code [0x024f29a0, 0x024f2c70]
Event: 0.369 Thread 0x00e80c00 35 java.lang.String::<init> (67 bytes)
Event: 0.369 Thread 0x00e80c00 nmethod 35 0x024f42c8 code [0x024f4400, 0x024f4640]
Event: 0.370 Thread 0x00e80c00 36 java.util.Arrays::copyOfRange (63 bytes)
Event: 0.371 Thread 0x00e80c00 nmethod 36 0x024f4808 code [0x024f4960, 0x024f4cf8]
Event: 0.372 Thread 0x00e80c00 38 java.lang.Integer::reverseBytes (26 bytes)
Event: 0.372 Thread 0x00e80c00 nmethod 38 0x024f5248 code [0x024f5340, 0x024f53d0]

GC Heap History (0 events):
No events

Deoptimization events (0 events):
No events

Internal exceptions (10 events):
Event: 0.177 Thread 0x0076a800 Threw 0x23f6f700 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.181 Thread 0x0076a800 Threw 0x23f714d8 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.214 Thread 0x0076a800 Threw 0x23f7a8c8 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.216 Thread 0x0076a800 Threw 0x23f7f950 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.217 Thread 0x0076a800 Threw 0x23f85a80 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.221 Thread 0x0076a800 Threw 0x23f897e8 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.409 Thread 0x0076a800 Threw 0x23ff5c10 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.413 Thread 0x0076a800 Threw 0x23ff8c18 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.414 Thread 0x0076a800 Threw 0x23ffe960 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166
Event: 0.420 Thread 0x0076a800 Threw 0x24007ac8 at C:\jdk7u2_32P\jdk7u15\hotspot\src\share\vm\prims\jvm.cpp:1166

Events (10 events):
Event: 0.412 loading class 0x04b5af90
Event: 0.413 loading class 0x04b5af90 done
Event: 0.414 loading class 0x04bd0740
Event: 0.414 loading class 0x04bd0740 done
Event: 0.418 loading class 0x04bd0a38
Event: 0.419 loading class 0x04bd0a38 done
Event: 0.420 loading class 0x04bd06c8
Event: 0.420 loading class 0x04bd06c8 done
Event: 0.421 loading class 0x04bc42b8
Event: 0.422 loading class 0x04bc42b8 done


Dynamic libraries:
0x01020000 - 0x0104f000 C:\Program Files (x86)\Java\jdk1.7.0_15\bin\javaw.exe
0x77920000 - 0x77aa0000 C:\Windows\SysWOW64\ntdll.dll
0x75060000 - 0x75170000 C:\Windows\syswow64\kernel32.dll
0x76990000 - 0x769d7000 C:\Windows\syswow64\KERNELBASE.dll
0x751e0000 - 0x75280000 C:\Windows\syswow64\ADVAPI32.dll
0x76f00000 - 0x76fac000 C:\Windows\syswow64\msvcrt.dll
0x76ee0000 - 0x76ef9000 C:\Windows\SysWOW64\sechost.dll
0x76c10000 - 0x76d00000 C:\Windows\syswow64\RPCRT4.dll
0x75000000 - 0x75060000 C:\Windows\syswow64\SspiCli.dll
0x74ff0000 - 0x74ffc000 C:\Windows\syswow64\CRYPTBASE.dll
0x755a0000 - 0x756a0000 C:\Windows\syswow64\USER32.dll
0x767a0000 - 0x76830000 C:\Windows\syswow64\GDI32.dll
0x76550000 - 0x7655a000 C:\Windows\syswow64\LPK.dll
0x75500000 - 0x7559d000 C:\Windows\syswow64\USP10.dll
0x726c0000 - 0x7285e000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\COMCTL32.dll
0x76fb0000 - 0x77007000 C:\Windows\syswow64\SHLWAPI.dll
0x75170000 - 0x751d0000 C:\Windows\system32\IMM32.DLL
0x75430000 - 0x754fc000 C:\Windows\syswow64\MSCTF.dll
0x676d0000 - 0x6778e000 C:\Program Files (x86)\Java\jdk1.7.0_15\jre\bin\msvcr100.dll
0x66af0000 - 0x66e3c000 C:\Program Files (x86)\Java\jdk1.7.0_15\jre\bin\client\jvm.dll
0x6f3e0000 - 0x6f3e7000 C:\Windows\system32\WSOCK32.dll
0x76ba0000 - 0x76bd5000 C:\Windows\syswow64\WS2_32.dll
0x76d20000 - 0x76d26000 C:\Windows\syswow64\NSI.dll
0x729b0000 - 0x729e2000 C:\Windows\system32\WINMM.dll
0x751d0000 - 0x751d5000 C:\Windows\syswow64\PSAPI.DLL
0x67e20000 - 0x67e2c000 C:\Program Files (x86)\Java\jdk1.7.0_15\jre\bin\verify.dll
0x677e0000 - 0x67800000 C:\Program Files (x86)\Java\jdk1.7.0_15\jre\bin\java.dll
0x6a040000 - 0x6a053000 C:\Program Files (x86)\Java\jdk1.7.0_15\jre\bin\zip.dll
0x6ea20000 - 0x6ea36000 C:\Windows\system32\CRYPTSP.dll
0x6e990000 - 0x6e9cb000 C:\Windows\system32\rsaenh.dll
0x72a00000 - 0x72a17000 C:\Windows\system32\USERENV.dll
0x729f0000 - 0x729fb000 C:\Windows\system32\profapi.dll
0x6a060000 - 0x6a074000 C:\Program Files (x86)\Java\jdk1.7.0_15\jre\bin\net.dll
0x6e9e0000 - 0x6ea1c000 C:\Windows\system32\mswsock.dll
0x73ea0000 - 0x73ea6000 C:\Windows\System32\wship6.dll
0x71f80000 - 0x71f90000 C:\Windows\system32\NLAapi.dll
0x72600000 - 0x72610000 C:\Windows\system32\napinsp.dll
0x725e0000 - 0x725f2000 C:\Windows\system32\pnrpnsp.dll
0x6d7d0000 - 0x6d814000 C:\Windows\system32\DNSAPI.dll
0x725d0000 - 0x725d8000 C:\Windows\System32\winrnr.dll
0x72060000 - 0x72065000 C:\Windows\System32\wshtcpip.dll
0x728c0000 - 0x728dc000 C:\Windows\system32\IPHLPAPI.DLL
0x728b0000 - 0x728b7000 C:\Windows\system32\WINNSI.DLL
0x741a0000 - 0x741a6000 C:\Windows\system32\rasadhlp.dll
0x6be50000 - 0x6be88000 C:\Windows\System32\fwpuclnt.dll
0x6a030000 - 0x6a03e000 C:\Program Files (x86)\Java\jdk1.7.0_15\jre\bin\nio.dll
0x6c2c0000 - 0x6c322000 C:\Users\Paul\AppData\Local\Temp\libsqlitejdbc-6544525787688936286.lib
0x72250000 - 0x7233b000 C:\Windows\system32\dbghelp.dll

VM Arguments:
jvm_args: -Dfile.encoding=Cp1252
java_command: Test
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_15
PATH=C:/Program Files (x86)/Java/jre7/bin/client;C:/Program Files (x86)/Java/jre7/bin;C:/Program Files (x86)/Java/jre7/lib/i386;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\PharosSystems\Core;C:\Program Files (x86)\Java\jdk1.7.0_15\bin;C:\eclipse;
USERNAME=Paul
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 15 Stepping 13, GenuineIntel



--------------- S Y S T E M ---------------

OS: Windows 7 , 64 bit Build 7601 Service Pack 1

CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 15 stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, tsc

Memory: 4k page, physical 3143744k(933004k free), swap 6285632k(3672076k free)

vm_info: Java HotSpot(TM) Client VM (23.7-b01) for windows-x86 JRE (1.7.0_15-b03), built on Feb 15 2013 14:01:25 by "java_re" with unknown MS VC++:1600

time: Thu Apr 04 05:46:55 2013
elapsed time: 0 seconds

我正在使用 sqlitejdbc-v056,我正在使用 Eclipse 进行开发。

我已将其导出为 jar 并运行;我已经在命令行(在 Eclipse 之外)上将其全部编译为 .class。在这两种情况下,我都无法重现这一点。

奇怪的是,如果我将 View 定义为 CREATE VIEW person_view AS SELECT id, name FROM person,我不会收到任何错误。

我个人祝贺任何能理解为什么会发生这种情况的人。 (我也很想知道是否有其他人可以复制它。)

最佳答案

对于是否要将其作为答案或评论,我有两种想法。这不是 OP 的答案,但可能对 future 的读者非常有用。建议 future 的读者检查他们是否拥有最新版本,因为这解决了 OP 的问题。

如果不是答案,我为什么要发布?...我刚刚遇到了一个非常相似的错误,仅根据错误无法将其与此错误区分开来。我尝试了很多不同版本的 xerial sqlite-library 并遇到了同样的问题。

在谷歌上搜索了很长时间后,除了一片空白之外什么也没有,我最终发现这个错误是由我的代码触发的。我有效地调用了:

conn = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH);
s = conn.createStatement();
s.execute(null); // oops

发生这种情况是因为我的所有查询都在运行时打包并单独加载,不正确的引用导致空指针出现在应该有查询的地方。

一般来说,您不希望您的代码所做的任何事情都会导致 JVM 崩溃。然而,对于基于 JNI 的库而言,情况并非总是如此。似乎 xerial sqlite-jdbc 库没有进行完整的空检查,有些事情(例如空 SQL 查询)会导致它在空指针上使 JVM 崩溃。

空指针在错误文件中由地址“0x00000000”显示:

siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

然而,由于这也出现在 OP 的问题中,因此似乎以前版本中的错误无论如何都会导致这种情况。

关于java - 运行 sqlite 语句时 JRE 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15810482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com