Crash in ShellStreams64.dll

We have received multiple crash reports in Microsoft Hardware Center (sysdev) caused by ShellStreams64.dll (shell extension) which is part of Apple's iCloud Control Panel on Windows.


Affected versions of the dll:

C:\Program Files\Common Files\Apple\Internet Services\ShellStreams64.dll

version: 53.00.0.7

version: 53.00.0.56


The stack trace:

ucrtbase.dll!abort () Unknown

ucrtbase.dll!terminate () Unknown

> SmartFTP.exe!__scrt_unhandled_exception_filter(_EXCEPTION_POINTERS * const pointers) Line 75 C++

KERNELBASE.dll!UnhandledExceptionFilter () Unknown

ntdll.dll!TppExceptionFilter() Unknown

ntdll.dll!TppWorkerpInnerExceptionFilter() Unknown

ntdll.dll!TppWorkerThread$filt$0() Unknown

ntdll.dll!__C_specific_handler () Unknown

ntdll.dll!__GSHandlerCheck_SEH () Unknown

ntdll.dll!RtlpExecuteHandlerForException () Unknown

ntdll.dll!RtlDispatchException() Unknown

ntdll.dll!RtlRaiseException() Unknown

KERNELBASE.dll!RaiseException () Unknown

msvcr120.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 154 C++

msvcp120.dll!std::_Xlength_error(const char * _Message) Line 19 C++

ShellStreams64.dll!00007ffe25337756() Unknown

ShellStreams64.dll!00007ffe2537c8ac() Unknown

ShellStreams64.dll!00007ffe2537c840() Unknown

ShellStreams64.dll!00007ffe2537c3c2() Unknown

ShellStreams64.dll!00007ffe253744d3() Unknown

ShellStreams64.dll!00007ffe253894d1() Unknown

windows.storage.dll!CRegFolder::BindToObject(struct _ITEMIDLIST_RELATIVE const *,struct IBindCtx *,struct _GUID const &,void * *) Unknown

windows.storage.dll!CShellItem::BindToHandler(struct IBindCtx *,struct _GUID const &,struct _GUID const &,void * *) Unknown

windows.storage.dll!GetRelatedItem<struct IIdentityName>(struct IShellItem *,struct IBindCtx *,bool,struct _GUID const &,void * *) Unknown

windows.storage.dll!CShellItem::Compare(struct IShellItem *,unsigned long,int *) Unknown

windows.storage.dll!CAutoDestItemsList::CheckForDuplicateItem(struct IShellItem *) Unknown

windows.storage.dll!CAutoDestItemsList::_AddDestinationList(struct IAutomaticDestinationList *,enum DESTLISTTYPE,class wistd::function<long > const &) Unknown

windows.storage.dll!CAutoDestItemsList::Refresh(class wistd::function<long > const &) Unknown

windows.storage.dll!CAutoDestItemsEnum::_EnsureInit(void) Unknown

windows.storage.dll!CAutoDestItemsEnum::Next(unsigned long,struct _ITEMID_CHILD * *,unsigned long *) Unknown

windows.storage.dll!CRegFolderEnum::Next(unsigned long,struct _ITEMID_CHILD * *,unsigned long *) Unknown

explorerframe.dll!CNscEnumTask::InternalResumeRT() Unknown

explorerframe.dll!CRunnableTask::Run() Unknown

windows.storage.dll!CShellTask::TT_Run(bool *) Unknown

windows.storage.dll!CShellTaskThread::ThreadProc(void) Unknown

windows.storage.dll!CShellTaskThread::s_ThreadProc(void *) Unknown

SHCore.dll!ExecuteWorkItemThreadProc () Unknown

ntdll.dll!RtlpTpWorkCallback () Unknown

ntdll.dll!TppWorkerThread() Unknown

kernel32.dll!BaseThreadInitThunk () Unknown

ntdll.dll!RtlUserThreadStart () Unknown


You notice that the crash happens during the enumeration of the quick access folder in the shell's namespace control (tree control). The BindToObject (IShellFolder) implementation of your object is throwing a c++ exception for some reason. This should not happen even if the function fails. Instead the function should return a HRESULT error code.


We were unable to reproduce the problem on our system but from the number of crash reports (100s) we get, a lot of customers are affected. We are happy to share the full heap crash dumps for further inspection.


Regards,

Mat

Replies

The best thing to do for something like this is to file a bug report including all the details you can. If you can post the bug number, that would be helpful.