来自 System.Data.SqlServerCe.Accessor.Dispose 的 SQLCE 3.5 SP2 NullReferenceException

发布于 2024-10-22 05:36:53 字数 3714 浏览 0 评论 0原文

我经常收到 SQL Server CE 3.5 SP2 引发的 NullReferenceException。下面是堆栈跟踪:

System.Data.SqlServerCe.dll!System.Data.SqlServerCe.Accessor.Dispose() + 0x5e 字节 System.Data.SqlServerCe.dll!System.Data.SqlServerCe.Accessor.Finalize() + 0x13 字节

到目前为止,我只在一台机器上看到过这个问题,而且恰好是 64 位的。不确定这是否有所贡献。我正在使用 32 位 SQLCE 库。

下面是异常发生时间/位置的反汇编:

00000000 55                   push        ebp 
00000001 8B EC                mov         ebp,esp 
00000003 57                   push        edi 
00000004 56                   push        esi 
00000005 53                   push        ebx 
00000006 8B F1                mov         esi,ecx 
00000008 83 7E 08 00          cmp         dword ptr [esi+8],0 
0000000c 74 5D                je          0000006B 
0000000e 33 FF                xor         edi,edi 
00000010 8B 46 08             mov         eax,dword ptr [esi+8] 
00000013 83 78 04 00          cmp         dword ptr [eax+4],0 
00000017 7E 4A                jle         00000063 
00000019 B9 01 00 00 00       mov         ecx,1 
0000001e E8 85 77 FB FF       call        FFFB77A8 
00000023 8B D8                mov         ebx,eax 
00000025 8B 8B 8C 09 00 00    mov         ecx,dword ptr [ebx+0000098Ch] 
0000002b 8B 46 08             mov         eax,dword ptr [esi+8] 
0000002e 3B 78 04             cmp         edi,dword ptr [eax+4] 
00000031 73 6E                jae         000000A1 
00000033 6B D7 2C             imul        edx,edi,2Ch 
00000036 8D 44 10 08          lea         eax,[eax+edx+8] 
0000003a 8B 40 10             mov         eax,dword ptr [eax+10h] 
0000003d 3B C8                cmp         ecx,eax 
0000003f 74 17                je          00000058 
00000041 8B 46 08             mov         eax,dword ptr [esi+8] 
00000044 3B 78 04             cmp         edi,dword ptr [eax+4] 
00000047 73 58                jae         000000A1 
00000049 6B D7 2C             imul        edx,edi,2Ch 
0000004c 8D 44 10 08          lea         eax,[eax+edx+8] 
00000050 8B 48 10             mov         ecx,dword ptr [eax+10h] 
00000053 E8 00 88 FB FF       call        FFFB8858 
00000058 83 C7 01             add         edi,1 
0000005b 8B 46 08             mov         eax,dword ptr [esi+8] 
0000005e 39 78 04             cmp         dword ptr [eax+4],edi 
00000061 7F C2                jg          00000025 
00000063 33 D2                xor         edx,edx 
00000065 89 56 08             mov         dword ptr [esi+8],edx 
00000068 89 56 04             mov         dword ptr [esi+4],edx 
0000006b B9 01 00 00 00       mov         ecx,1 
00000070 E8 33 77 FB FF       call        FFFB77A8 
00000075 8B D8                mov         ebx,eax 
00000077 8B 8B 8C 09 00 00    mov         ecx,dword ptr [ebx+0000098Ch] 
0000007d 8B 56 28             mov         edx,dword ptr [esi+28h] 
00000080 3B CA                cmp         ecx,edx 
00000082 74 11                je          00000095 
00000084 8B 4E 28             mov         ecx,dword ptr [esi+28h] 
00000087 E8 CC 87 FB FF       call        FFFB8858 
0000008c 8B 83 8C 09 00 00    mov         eax,dword ptr [ebx+0000098Ch] 
00000092 89 46 28             mov         dword ptr [esi+28h],eax 
00000095 8B CE                mov         ecx,esi 
00000097 E8 B4 62 FB FF       call        FFFB6350 
0000009c 5B                   pop         ebx 
0000009d 5E                   pop         esi 
0000009e 5F                   pop         edi 
0000009f 5D                   pop         ebp 
000000a0 C3                   ret 
000000a1 E8 FA 76 FB FF       call        FFFB77A0 
000000a6 CC                   int         3 

异常在偏移0000005e处抛出。

我很想迁移到 SQL CE 4.0,我听说它更可靠,但我暂时坚持使用 .NET 3.5。

I'm often getting a NullReferenceException being thrown by SQL Server CE 3.5 SP2. Below is the stack trace:

System.Data.SqlServerCe.dll!System.Data.SqlServerCe.Accessor.Dispose() + 0x5e bytes
System.Data.SqlServerCe.dll!System.Data.SqlServerCe.Accessor.Finalize() + 0x13 bytes

So far, I've only seen this issue on a single machine, which happens to be 64bit. Not sure if that's contributing. I'm using the 32bit SQLCE library.

Below is the dissassembly at the time/location of the exception:

00000000 55                   push        ebp 
00000001 8B EC                mov         ebp,esp 
00000003 57                   push        edi 
00000004 56                   push        esi 
00000005 53                   push        ebx 
00000006 8B F1                mov         esi,ecx 
00000008 83 7E 08 00          cmp         dword ptr [esi+8],0 
0000000c 74 5D                je          0000006B 
0000000e 33 FF                xor         edi,edi 
00000010 8B 46 08             mov         eax,dword ptr [esi+8] 
00000013 83 78 04 00          cmp         dword ptr [eax+4],0 
00000017 7E 4A                jle         00000063 
00000019 B9 01 00 00 00       mov         ecx,1 
0000001e E8 85 77 FB FF       call        FFFB77A8 
00000023 8B D8                mov         ebx,eax 
00000025 8B 8B 8C 09 00 00    mov         ecx,dword ptr [ebx+0000098Ch] 
0000002b 8B 46 08             mov         eax,dword ptr [esi+8] 
0000002e 3B 78 04             cmp         edi,dword ptr [eax+4] 
00000031 73 6E                jae         000000A1 
00000033 6B D7 2C             imul        edx,edi,2Ch 
00000036 8D 44 10 08          lea         eax,[eax+edx+8] 
0000003a 8B 40 10             mov         eax,dword ptr [eax+10h] 
0000003d 3B C8                cmp         ecx,eax 
0000003f 74 17                je          00000058 
00000041 8B 46 08             mov         eax,dword ptr [esi+8] 
00000044 3B 78 04             cmp         edi,dword ptr [eax+4] 
00000047 73 58                jae         000000A1 
00000049 6B D7 2C             imul        edx,edi,2Ch 
0000004c 8D 44 10 08          lea         eax,[eax+edx+8] 
00000050 8B 48 10             mov         ecx,dword ptr [eax+10h] 
00000053 E8 00 88 FB FF       call        FFFB8858 
00000058 83 C7 01             add         edi,1 
0000005b 8B 46 08             mov         eax,dword ptr [esi+8] 
0000005e 39 78 04             cmp         dword ptr [eax+4],edi 
00000061 7F C2                jg          00000025 
00000063 33 D2                xor         edx,edx 
00000065 89 56 08             mov         dword ptr [esi+8],edx 
00000068 89 56 04             mov         dword ptr [esi+4],edx 
0000006b B9 01 00 00 00       mov         ecx,1 
00000070 E8 33 77 FB FF       call        FFFB77A8 
00000075 8B D8                mov         ebx,eax 
00000077 8B 8B 8C 09 00 00    mov         ecx,dword ptr [ebx+0000098Ch] 
0000007d 8B 56 28             mov         edx,dword ptr [esi+28h] 
00000080 3B CA                cmp         ecx,edx 
00000082 74 11                je          00000095 
00000084 8B 4E 28             mov         ecx,dword ptr [esi+28h] 
00000087 E8 CC 87 FB FF       call        FFFB8858 
0000008c 8B 83 8C 09 00 00    mov         eax,dword ptr [ebx+0000098Ch] 
00000092 89 46 28             mov         dword ptr [esi+28h],eax 
00000095 8B CE                mov         ecx,esi 
00000097 E8 B4 62 FB FF       call        FFFB6350 
0000009c 5B                   pop         ebx 
0000009d 5E                   pop         esi 
0000009e 5F                   pop         edi 
0000009f 5D                   pop         ebp 
000000a0 C3                   ret 
000000a1 E8 FA 76 FB FF       call        FFFB77A0 
000000a6 CC                   int         3 

The exception is thrown at offset 0000005e.

I'd love to move to SQL CE 4.0, which I've heard is more reliable, but I'm stuck with .NET 3.5 for the time being.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泪痕残 2024-10-29 05:36:53

显然,这个问题已在累积更新 2 中修复。详细信息可以在此处找到:

http://support.microsoft.com /kb/2300599

这基本上解决了问题。

我还写了一篇关于此的博客文章,其中包含更多详细信息:
http:// /www.robertdowney.com/post/2011/04/13/Trials-and-Tribulations-with-SQL-Server-Compact-Edition.aspx

Apparently, this was fixed in Cummulative Update 2. Details can be found here:

http://support.microsoft.com/kb/2300599

This mostly resolved the issue.

I've also written a blog post about this with more details:
http://www.robertdowney.com/post/2011/04/13/Trials-and-Tribulations-with-SQL-Server-Compact-Edition.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文