{"id":593,"date":"2014-07-02T07:00:00","date_gmt":"2014-07-02T07:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2014\/07\/02\/redirecting-the-favorites-folder-is-technically-legal-but-you-wouldnt-like-it\/"},"modified":"2014-07-02T07:00:00","modified_gmt":"2014-07-02T07:00:00","slug":"redirecting-the-favorites-folder-is-technically-legal-but-you-wouldnt-like-it","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20140702-00\/?p=593","title":{"rendered":"Redirecting the Favorites folder is technically legal, but you wouldn&#039;t like it"},"content":{"rendered":"<p>\nA customer liaison asked for assistance in debugging why Internet Explorer\nfrequently stops responding at their customer&#8217;s site.\n&#8220;We have tried a number of things like clearning the temporary\nInternet files, disabling add-ons, and resetting Internet Explorer settings.\nPlease let me know if you can provide guidance based on the dump files\nprovided below to indicate what could be causing Internet Explorer\nto hang here.&#8221;\n<\/p>\n<p>\nThe dump file showed 23 threads, and all of them\n<a HREF=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2006\/07\/10\/661389.aspx\">\nseemed to be normal<\/a>,\nexcept for one which looked like this:\n<\/p>\n<pre>\nntdll!KiFastSystemCallRet\nntdll!ZwOpenFile+0xc\nkernel32!BaseDllOpenIniFileOnDisk+0x1ec\nkernel32!BaseDllReadWriteIniFileOnDisk+0x22\nkernel32!BaseDllReadWriteIniFile+0x154\nkernel32!GetPrivateProfileStringW+0x35\nkernel32!GetPrivateProfileSectionNamesW+0x18\nshell32!CPrivateProfile::_GetPrivateProfileAlloc+0x9e\nshell32!CPrivateProfile::GetSectionNames+0xa0\nieframe!CINIPropSetStg::Load+0x74\nieframe!CInternetShortcutPropertyStore::_CreateStoreFromFile+0x4e\nieframe!CInternetShortcutPropertyStore::Load+0x22\nieframe!CInternetShortcut::LoadFromFileW+0x39\nieframe!CInternetShortcut::Initialize+0x17\nshell32!InitializeFileHandlerWithFile+0x2d\nshell32!CFileSysItemString::HandlerCreateInstance+0x29a\nshell32!CFileSysItemString::LoadHandler+0x91\nshell32!CFSFolder::_CreatePerInstanceDefExtIcon+0x7d\nshell32!CFSFolder::_CreateDefExtIcon+0xe9\nshell32!CFSFolder::s_GetExtractIcon+0x1b\nshell32!CFSFolder::_BindHandler+0x209\nshell32!CFSFolder::GetUIObjectOf+0x21\nshell32!GetExtractIconW+0x31\nshell32!_GetILIndexFromItem+0x52\nshell32!SHMapPIDLToSystemImageListIndex+0x37\nieframe!OrderItem_GetSystemImageListIndex+0x187\nieframe!CSFToolbar::_GetBitmap+0x2f\nieframe!CSFToolbar::_OnGetDispInfo+0x34\nieframe!CSFToolbar::_OnNotify+0x8e\nieframe!CISFBand::_OnNotify+0x2c\nieframe!CSFToolbar::OnWinEvent+0x89\nieframe!_FwdWinEvent+0x1d\nieframe!CBandSite::_SendToToolband+0x44\nieframe!CInternetToolbar::_OnNotify+0x2e\nieframe!CInternetToolbar::SizableWndProc+0x223\nuser32!InternalCallWinProc+0x23\nuser32!UserCallWinProcCheckWow+0x14b\nuser32!SendMessageWorker+0x4b7\nuser32!SendMessageW+0x7c\ncomctl32!CCSendNotify+0xbfb\ncomctl32!SendNotifyEx+0x63\ncomctl32!CReBar::_WndProc+0x24f\ncomctl32!CReBar::s_WndProc+0x2c\nuser32!InternalCallWinProc+0x23\nuser32!UserCallWinProcCheckWow+0x14b\nuser32!CallWindowProcAorW+0x97\nuser32!CallWindowProcW+0x1b\ncomctl32!CallOriginalWndProc+0x1a\ncomctl32!CallNextSubclassProc+0x3d\ncomctl32!DefSubclassProc+0x46\nieframe!CInternetToolbar::CITBandSite::s_RebarSubclassWndProc+0x5a\ncomctl32!CallNextSubclassProc+0x3d\ncomctl32!MasterSubclassProc+0x54\nuser32!InternalCallWinProc+0x23\nuser32!UserCallWinProcCheckWow+0x14b\nuser32!SendMessageWorker+0x4b7\nuser32!SendMessageW+0x7c\ncomctl32!CCSendNotify+0xbfb\ncomctl32!CToolbar::TBGetItem+0x2c\ncomctl32!CToolbar::DrawButton+0x5e9\ncomctl32!CToolbar::DrawToolbarH+0x1ad\ncomctl32!CToolbar::TBPaintImpl+0xd5\ncomctl32!CToolbar::TBPaint+0x18c\ncomctl32!CToolbar::ToolbarWndProc+0xd2e\ncomctl32!CToolbar::s_ToolbarWndProc+0x9b\nuser32!InternalCallWinProc+0x23\nuser32!UserCallWinProcCheckWow+0x14b\nuser32!CallWindowProcAorW+0x97\nuser32!CallWindowProcW+0x1b\ncomctl32!CallOriginalWndProc+0x1a\ncomctl32!CallNextSubclassProc+0x3d\ncomctl32!DefSubclassProc+0x46\nieframe!CSFToolbar::_DefWindowProc+0xb8\nieframe!CISFBand::_DefWindowProc+0x75\nieframe!CNotifySubclassWndProc::s_SubclassWndProc+0xb4\ncomctl32!CallNextSubclassProc+0x3d\ncomctl32!MasterSubclassProc+0x54\nuser32!InternalCallWinProc+0x23\nuser32!UserCallWinProcCheckWow+0x14b\nuser32!DispatchClientMessage+0xda\nuser32!__fnDWORD+0x24\nntdll!KiUserCallbackDispatcher+0x2e\nuser32!NtUserDispatchMessage+0xc\nuser32!DispatchMessageWorker+0x38c\nuser32!DispatchMessageW+0xf\nieframe!CTabWindow::_TabWindowThreadProc+0x280\nkernel32!BaseThreadInitThunk+0xe\nntdll!__RtlUserThreadStart+0x23\nntdll!_RtlUserThreadStart+0x1b\n<\/pre>\n<p>\n(Remember,\nyou can\n<a HREF=\"http:\/\/blogs.msdn.com\/b\/oldnewthing\/archive\/2006\/08\/21\/710754.aspx\">\nget symbols for operating system binaries<\/a>.)\n<\/p>\n<p>\nGeneral debugging tip:\nIf you see a really huge stack,\nthat&#8217;s a good sign that something interesting is going on.\nBoring stacks tend to be small.\n<\/p>\n<p>\nFurthermore, frames near the bottom of the stack tend to describe\nwhat the purpose of the thread is,\nwhereas frames near the top of the stack tend to describe what\nthe thread is actually doing right now.\n(Exercise: Why?)\n<\/p>\n<p>\nIn this case, we see a stack that was probably created to manage\na tab window\n(<code>CTab&shy;Window::_Tab&shy;Window&shy;Thread&shy;Proc<\/code>)\nand it&#8217;s currently stuck in an I\/O operation.\nYou can then look at the file name to see what file is stuck.\n<\/p>\n<pre>\n0:001&gt; du 04cd6aac\n04cd6aac \"\\\\server\\share\\abcdefg\\Favorites\\Mail.url\"\n<\/pre>\n<p>\nIt looks like this user stored their Favorites on a network share\nthat is not responding.\n<\/p>\n<p>\nThe customer liaison replied,\n<\/p>\n<blockquote CLASS=\"q\"><p>\nThanks a lot for this information.\nCan you help me understand how do we tell that the dump\nindicates this file I\/O is causing IE to hang?\nHaving this information would help me better explain this to the customer.\n<\/p><\/blockquote>\n<p>\nI wasn&#8217;t sure how to respond to this.\nIf you see a function with the words\nFile and one of Open, Read, or Write in its name,\nthere&#8217;s a good chance that it opens, reads, or writes a file.\nYou probably want to look to see what file is being opened,\nread from, or written to,\nbecause that may give a clue why the I\/O operation is stuck.\n<\/p>\n<p>\nIt turns out that this customer redirected the user&#8217;s Favorites\nto a network location.\nThe Internet Explorer folks tell me that this is not an explicitly\nsupported scenario in the sense that they did not do any tuning\nto make this scenario work well,\nand frequent hangs are consequently not unexpected.\nIf you redirect the Favorites to a network location,\nthen you get what you get.\nAnd if that server frequently becomes unavailable,\nthen what you get often sucks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A customer liaison asked for assistance in debugging why Internet Explorer frequently stops responding at their customer&#8217;s site. &#8220;We have tried a number of things like clearning the temporary Internet files, disabling add-ons, and resetting Internet Explorer settings. Please let me know if you can provide guidance based on the dump files provided below to [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[104],"class_list":["post-593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-tipssupport"],"acf":[],"blog_post_summary":"<p>A customer liaison asked for assistance in debugging why Internet Explorer frequently stops responding at their customer&#8217;s site. &#8220;We have tried a number of things like clearning the temporary Internet files, disabling add-ons, and resetting Internet Explorer settings. Please let me know if you can provide guidance based on the dump files provided below to [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=593"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/593\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}