>From time to time I get crashes while showing rev logs. Windbg shows me
that in CBinaryInStreamBase (binarystream.h) you throw an exception, but
this is never handled:
throw CStreamException("unexpected end of stream");
this cause the UI to close without letting the user know what happens.
ucrtbase!abort+0x4e
ucrtbase!terminate+0x1f
VCRUNTIME140_1!FindHandler<__FrameHandler4>(struct EHExceptionRecord *
pExcept = 0x000000e8`61e2e8e0, unsigned int64 * pRN = 0x000000e8`61e2d9d0,
struct _CONTEXT * pContext = 0x000000e8`61e2e2d0, struct
_xDISPATCHER_CONTEXT * pDC = 0x000000e8`61e2dab0, struct FH4::FuncInfo4 *
pFuncInfo = 0x000000e8`61e2d9a0, unsigned char recursive = 0x00 '', int
CatchDepth = 0n0, unsigned int64 * pMarkerRN = 0x00000000`00000000)+0x46f
[d:\agent\_work\2\s\src\vctools\crt\vcruntime\src\eh\frame.cpp @ 682]
VCRUNTIME140_1!__InternalCxxFrameHandler<__FrameHandler4>(struct
EHExceptionRecord * pExcept = 0x000000e8`61e2e8e0, unsigned int64 * pRN =
0x000000e8`61e2d9d0, struct _CONTEXT * pContext = 0x000000e8`61e2e2d0,
struct _xDISPATCHER_CONTEXT * pDC = 0x000000e8`61e2dab0, struct
FH4::FuncInfo4 * pFuncInfo = 0x000000e8`61e2d9a0, int CatchDepth = 0n0,
unsigned int64 * pMarkerRN = 0x00000000`00000000, unsigned char recursive =
0x00 '')+0x267
[d:\agent\_work\2\s\src\vctools\crt\vcruntime\src\eh\frame.cpp @ 352]
VCRUNTIME140_1!__CxxFrameHandler4(struct EHExceptionRecord * pExcept =
0x000000e8`61e2e8e0, unsigned int64 RN = <Value unavailable error>, struct
_CONTEXT * pContext = 0x000000e8`61e2e2d0, struct _xDISPATCHER_CONTEXT *
pDC = 0x000000e8`61e2dab0)+0xa9
[d:\agent\_work\2\s\src\vctools\crt\vcruntime\src\eh\risctrnsctrl.cpp @
290]
TortoiseProc!__GSHandlerCheck_EH4(struct _EXCEPTION_RECORD *
ExceptionRecord = 0x000000e8`61e2e8e0, void * EstablisherFrame =
0x000000e8`61e2eac0, struct _CONTEXT * ContextRecord = 0x000000e8`61e2e2d0,
struct _DISPATCHER_CONTEXT * DispatcherContext = 0x000000e8`61e2dab0)+0x64
[d:\A01\_work\6\s\src\vctools\crt\vcstartup\src\gs\amd64\gshandlereh4.cpp @
86]
ntdll!RtlpExecuteHandlerForException+0xd
ntdll!RtlDispatchException+0x197
ntdll!RtlRaiseException+0x18d
KERNELBASE!RaiseException+0x68
VCRUNTIME140!_CxxThrowException(void * pExceptionObject =
0x000000e8`61e2ea20, struct _s__ThrowInfo * pThrowInfo = <Value unavailable
error>)+0x90 [d:\agent\_work\2\s\src\vctools\crt\vcruntime\src\eh\throw.cpp
@ 75]
TortoiseProc!CBinaryInStreamBase::GetByte(void)+0x71
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\Streams\BinaryInStream.h @ 71]
TortoiseProc!CPackedDWORDInStreamBase::InternalGetValue+0x8
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\Streams\PackedDWORDInStream.cpp @
42]
TortoiseProc!CPackedDWORDInStreamBase::GetValue(void)+0x38
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\Streams\PackedDWORDInStream.h @
87]
TortoiseProc!CDiffInStreamBase<CPackedDWORDInStreamBase,unsigned
long>::GetValue+0x8
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\Streams\DiffIntegerInStream.h @
62]
TortoiseProc!LogCache::operator>>(class IHierarchicalInStream * stream =
0x000000e8`60d1d180, class LogCache::CSkipRevisionInfo * container =
0x000000e8`60d6fd00)+0x1c2
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\Containers\SkipRevisionInfo.cpp @
479]
TortoiseProc!LogCache::CCachedLogInfo::Load(int maxFailures = 0n151)+0x26e
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\Containers\CachedLogInfo.cpp @
354]
TortoiseProc!LogCache::CLogCachePool::GetCache(class
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
* uuid = <Value unavailable error>, class
ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t> > >
* root = <Value unavailable error>)+0x255
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\LogCachePool.cpp @ 221]
TortoiseProc!CCacheLogQuery::GetRelativeRepositoryPath(class CTSVNPath *
url = 0x000000e8`61e2f230)+0x77
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\CacheLogQuery.cpp @ 1173]
TortoiseProc!CCacheLogQuery::Log(class CTSVNPathList * targets = <Value
unavailable error>, class SVNRev * peg_revision = 0x000000e8`5cb3d8e0,
class SVNRev * start = 0x000000e8`5cb3d900, class SVNRev * end =
0x000000e8`5cb3d958, int limit = 0n100, bool strictNodeHistory = false,
class ILogReceiver * receiver = 0x000000e8`5cb3c3c8, bool includeChanges =
false, bool includeMerges = false, bool includeStandardRevProps = true,
bool includeUserRevProps = false, class
std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char>
>
> > > * userRevProps = 0x000000e8`61e2f478 { size=0 })+0x2c5
[C:\TSVN_BRANCH\tortoisesvn\src\LogCache\CacheLogQuery.cpp @ 1448]
TortoiseProc!SVN::ReceiveLog(class CTSVNPathList * pathlist =
0x000000e8`61e2fa18, class SVNRev * revisionPeg = 0x000000e8`5cb3d8e0,
class SVNRev * revisionStart = 0x000000e8`5cb3d900, class SVNRev *
revisionEnd = 0x000000e8`5cb3d958, int limit = 0n100, bool strict = false,
bool withMerges = false, bool refresh = false)+0x197
[C:\TSVN_BRANCH\tortoisesvn\src\SVN\SVN.cpp @ 1955]
15 000000e8`61e2f510 00007ff7`41ba38a5
TortoiseProc!CLogDlg::LogThread(void)+0x2094
[C:\TSVN_BRANCH\tortoisesvn\src\TortoiseProc\LogDialog\LogDlg.cpp @ 1810]
16 000000e8`61e2fe50 00007ff7`41ba4590
TortoiseProc!async::CJobBase::Execute(void)+0x25
[C:\TSVN_BRANCH\tortoisesvn\src\AsyncFramework\JobBase.cpp @ 84]
TortoiseProc!async::CJobScheduler::ThreadFunc(void * arg =
0x000000e8`60cfe630)+0x30
[C:\TSVN_BRANCH\tortoisesvn\src\AsyncFramework\JobScheduler.cpp @ 396]
TortoiseProc!async::CThread::ThreadFunc(void * arg =
0x000000e8`6074ec30)+0x3a
[C:\TSVN_BRANCH\tortoisesvn\src\AsyncFramework\Thread.cpp @ 43]
ucrtbase!thread_start<void +0xa6
kernel32!BaseThreadInitThunk+0x22
ntdll!RtlUserThreadStart+0x34
It would be better to handle it and tell user that reading log had some
issues and add a button to retry it.
--
You received this message because you are subscribed to the Google Groups
"TortoiseSVN" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/tortoisesvn/1346e5fa-1c32-4cde-8d37-ac7a848736cbn%40googlegroups.com.