Tk Source Code

Artifact [d714562c]
Login

Artifact d714562cea764190a163c74a375e0121a7925d00:

Ticket change [d714562c] - Ticket [39e510f6] Revised [text]: textDisp-27.7.2 segfaults on OS X status still Open with 3 other changes by fvogel 2017-05-24 21:55:28.
D 2017-05-24T21:55:28.680
J icomment OK\sI\sunderstand\snow\swhat\syou\smeant.\r\n\r\n\s1.\sI\shave:\r\n\r\n\s\s-\scompiled\sTcl\swith\s"-g\s-00\s-fstack-protector-all"\s\r\n\r\n\s\s-\scompiled\sTk\swith\s"-g\s-01\s-fstack-protector-all"\r\n\r\nWhat\sI\ssaid\sbelow:\r\n<verbatim>\r\nStepping\sfurther,\severything\sseems\sto\sbe\sOK\suntil\sthe\scall\sto:\s\r\n\tname\s=\sTcl_GetHashKey(&sharedTextPtr->tagTable,\shPtr);\r\nin\sTkTextCreateTag().\s\r\n</verbatim>\r\nis\sactually\swrong.\sI\swas\strapped\sby\sthe\sfact\sthe\sdebugger\sdoes\snot\sshow\ssome\svariables,\sbut\sthis\smust\srather\sbe\san\sartifact\sdue\sto\sthe\soptimization.\r\n\r\nMaking\sfurther\sexperiments\swith\slldb,\sthe\ssegfault\shappens\swhen\sreturning\sfrom\sTkTextCreateTag(),\son\sline\s2010\sjust\safter\sthe\sfinal\sreturn.\sConfirms\sstack\scorruption\sI\sguess\ssince\sat\sthis\spoint\swe\sget\sa\s__stack_chk_fail.\r\n\r\nLooking\sat\ssharedTextPtr->tagTable,\sand\scomparing\swhat's\sin\sthere\son\sOS\sX\sand\son\sWindows,\sI\sdidn't\sdetect\sany\sissue.\sSame\svalues\s(except\sspecific\spointer\svalues,\sof\scourse),\sfrom\sthe\sfirst\scall\swhen\screating\sthe\stext\swidget\suntil\sthe\sreturn\spoint\swhen\screating\sthe\s"big"\stag,\sincluding\sbefore\sand\safter\seach\scall\sto\sTk_CreateOptionTable().\r\n\r\n\r\n\s2.\sI\salso\shave:\r\n\r\n\s\s-\scompiled\sTcl\swith\s"-g\s-00\s-fstack-protector-all"\s\r\n\r\n\s\s-\scompiled\sTk\swith\s"-g\s-01"\r\n\r\nAnd\smaking\sfurther\stests\swithout\sthis\sstack\sprotector\sfor\sTk,\sthe\sbacktrace\sin\sthat\scase\sshows\s(this\sis\sfrom\sthe\sattached\s"TkConfigureTag\scrash\sreport\s4.txt"):\r\n<verbatim>\r\n0\s\s\sTk\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0x000000010d74ae8a\sTk_AllocFontFromObj\s+\s26\s(tkFont.c:1092)\r\n1\s\s\sTk\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0x000000010d7451ab\sDoObjConfig\s+\s571\s(tkConfig.c:716)\r\n2\s\s\sTk\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0x000000010d7457da\sTk_SetOptions\s+\s314\s(tkConfig.c:1299)\r\n3\s\s\sTk\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0x000000010d7f2a24\sTkConfigureTag\s+\s164\s(tkTextTag.c:1094)\r\n4\s\s\sTk\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0x000000010d7f169b\sTkTextTagCmd\s+\s2475\s(tkTextTag.c:472)\r\n5\s\s\sTk\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s0x000000010d7b6c27\sTextWidgetObjCmd\s+\s2631\s(tkText.c:2632)\r\n...\r\n</verbatim>\r\n\r\nThe\sEXC_BAD_ACCESS\shappens\sat\sthe\svery\sbeginning\sof\sTk_AllocFontFromObj(),\son\sline\s1092:\r\n\r\n<verbatim>\r\n(lldb)\sn\r\nProcess\s88869\sstopped\r\n*\sthread\s#1,\squeue\s=\s'com.apple.main-thread',\sstop\sreason\s=\sEXC_BAD_ACCESS\s(code=1,\saddress=0x50)\r\n\s\s\s\sframe\s#0:\s0x00000001000aae8a\sTk`Tk_AllocFontFromObj(interp=0x000000010101b010,\stkwin=0x0000000000000000,\sobjPtr=0x0000000100839f10)\sat\stkFont.c:1092\s[opt]\r\n\s\s\s1089\s\s\s\s\sTcl_Obj\s*objPtr)\s\s\s\s\s\s\s\s\s\s\s\s/*\sObject\sdescribing\sfont,\sas:\snamed\sfont,\r\n\s\s\s1090\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s*\snative\sformat,\sor\sparseable\sstring.\s*/\r\n\s\s\s1091\s{\r\n->\s1092\s\s\s\s\sTkFontInfo\s*fiPtr\s=\s((TkWindow\s*)\stkwin)->mainPtr->fontInfoPtr;\r\n\s\s\s1093\s\s\s\s\sTcl_HashEntry\s*cacheHashPtr,\s*namedHashPtr;\r\n\s\s\s1094\s\s\s\s\sTkFont\s*fontPtr,\s*firstFontPtr,\s*oldFontPtr;\r\n\s\s\s1095\s\s\s\s\sint\sisNew,\sdescent;\r\n</verbatim>\r\n\r\nAt\sthis\spoint:\r\n\r\n<verbatim>\r\n(lldb)\sp\s(TkWindow\s*)\stkwin\r\n(TkWindow\s*)\s$15\s=\s0x0000000000000000\r\n</verbatim>\r\n\r\nAha!\stkwin\sis\sNULL\swhen\sTk_AllocFontFromObj()\sis\sentered.\r\n\r\nIt\sis\salready\sNULL\swhen\sentering\sDoObjConfig(),\sand\swhen\scalling\sTk_SetOptions()\sin\sTkConfigureTag().\r\n\r\nActually,\stextPtr->tkwin\sbecomes\sNULL\sexactly\swhen\sreturning\sfrom\sTkTextCreateTag()\son\stkTextTag.c:1076\r\n\r\nWatching\stextPtr->tkwin\sall\salong\sTkTextCreateTag(),\sit\sappears\sthat\sup\sto\sthe\svery\send\s(the\sreturn\spoint),\sit\sstill\shas\sthe\scorrect\snon\sNULL\svalue\s(the\svalue\sdoes\snot\schange\sfrom\sthe\sbeginning\sto\sthe\send\sof\sTkTextCreateTag()).\sBut\swhen\swe're\sback\sin\sTkConfigureTag()\sthen\sit's\sgone\s(it\shas\sswitched\sto\sNULL):\r\n\r\n<verbatim>\r\n(lldb)\r\nProcess\s88918\sstopped\r\n*\sthread\s#1,\squeue\s=\s'com.apple.main-thread',\sstop\sreason\s=\sstep\sover\r\n\s\s\s\sframe\s#0:\s0x0000000100152303\sTk`TkTextCreateTag(textPtr=0x0000000100880810,\stagName=<unavailable>,\snewTag=<unavailable>)\sat\stkTextTag.c:2003\s[opt]\r\n\s\s\s2000\s\s\s\s\s\s\s\s\sTkBitSet(sharedTextPtr->selectionTags,\sindex);\r\n\s\s\s2001\s\s\s\s\s\s\s\s\sTkBitSet(sharedTextPtr->dontUndoTags,\sindex);\r\n\s\s\s2002\s\s\s\s\s}\selse\s{\r\n->\s2003\s\s\s\s\s\s\s\s\stagPtr->relief\s=\sTK_RELIEF_FLAT;\r\n\s\s\s2004\s\s\s\s\s\s\s\s\sassert(hPtr);\r\n\s\s\s2005\s\s\s\s\s\s\s\s\sTcl_SetHashValue(hPtr,\stagPtr);\r\n\s\s\s2006\s\s\s\s\s}\r\n(lldb)\sp\stextPtr->tkwin\r\n(Tk_Window)\s$33\s=\s0x00000001011bf610\r\n(lldb)\sn\r\nProcess\s88918\sstopped\r\n*\sthread\s#1,\squeue\s=\s'com.apple.main-thread',\sstop\sreason\s=\sstep\sover\r\n\s\s\s\sframe\s#0:\s0x000000010015230e\sTk`TkTextCreateTag(textPtr=0x0000000100880810,\stagName=<unavailable>,\snewTag=<unavailable>)\sat\stkTextTag.c:2005\s[opt]\r\n\s\s\s2002\s\s\s\s\s}\selse\s{\r\n\s\s\s2003\s\s\s\s\s\s\s\s\stagPtr->relief\s=\sTK_RELIEF_FLAT;\r\n\s\s\s2004\s\s\s\s\s\s\s\s\sassert(hPtr);\r\n->\s2005\s\s\s\s\s\s\s\s\sTcl_SetHashValue(hPtr,\stagPtr);\r\n\s\s\s2006\s\s\s\s\s}\r\n\s\s\s2007\r\n\s\s\s2008\s\s\s\s\sMarkIndex(sharedTextPtr,\stagPtr,\strue);\r\n(lldb)\sp\stextPtr->tkwin\r\n(Tk_Window)\s$34\s=\s0x00000001011bf610\r\n(lldb)\sn\r\nProcess\s88918\sstopped\r\n*\sthread\s#1,\squeue\s=\s'com.apple.main-thread',\sstop\sreason\s=\sstep\sover\r\n\s\s\s\sframe\s#0:\s0x0000000100152381\sTk`TkTextCreateTag(textPtr=0x0000000100880810,\stagName=<unavailable>,\snewTag=<unavailable>)\sat\stkTextTag.c:2008\s[opt]\r\n\s\s\s2005\s\s\s\s\s\s\s\s\sTcl_SetHashValue(hPtr,\stagPtr);\r\n\s\s\s2006\s\s\s\s\s}\r\n\s\s\s2007\r\n->\s2008\s\s\s\s\sMarkIndex(sharedTextPtr,\stagPtr,\strue);\r\n\s\s\s2009\s\s\s\s\sreturn\stagPtr;\r\n\s\s\s2010\s}\r\n\s\s\s2011\r\n\r\n(lldb)\sp\stextPtr->tkwin\r\n(Tk_Window)\s$35\s=\s0x00000001011bf610\r\n(lldb)\sn\r\nProcess\s88918\sstopped\r\n*\sthread\s#1,\squeue\s=\s'com.apple.main-thread',\sstop\sreason\s=\sstep\sover\r\n\s\s\s\sframe\s#0:\s0x0000000100152391\sTk`TkTextCreateTag(textPtr=0x0000000100880810,\stagName=<unavailable>,\snewTag=<unavailable>)\sat\stkTextTag.c:2010\s[opt]\r\n\s\s\s2007\r\n\s\s\s2008\s\s\s\s\sMarkIndex(sharedTextPtr,\stagPtr,\strue);\r\n\s\s\s2009\s\s\s\s\sreturn\stagPtr;\r\n->\s2010\s}\r\n\s\s\s2011\r\n\r\n\s\s\s2012\s/*\r\n\s\s\s2013\s\s*----------------------------------------------------------------------\r\n(lldb)\sp\stextPtr->tkwin\r\n(Tk_Window)\s$36\s=\s0x00000001011bf610\r\n(lldb)\sn\r\nProcess\s88918\sstopped\r\n*\sthread\s#1,\squeue\s=\s'com.apple.main-thread',\sstop\sreason\s=\sstep\sover\r\n\s\s\s\sframe\s#0:\s0x00000001001529bd\sTk`TkConfigureTag(interp=0x0000000101024610,\stextPtr=0x0000000100000000,\stagName=<unavailable>,\sobjc=2,\sobjv=0x00000001010286d0)\sat\stkTextTag.c:1076\s[opt]\r\n\s\s\s1073\s\s\s\s\sint\smask\s=\s0;\r\n\s\s\s1074\s\s\s\s\sbool\snewTag;\r\n\s\s\s1075\s\s\s\s\sTkSharedText\s*sharedTextPtr\s=\stextPtr->sharedTextPtr;\r\n->\s1076\s\s\s\s\sTkTextTag\s*tagPtr\s=\sTkTextCreateTag(textPtr,\stagName,\s&newTag);\r\n\s\s\s1077\s\s\s\s\sconst\schar\s*elideString\s=\stagPtr->elideString;\r\n\s\s\s1078\s\s\s\s\sbool\selide\s=\stagPtr->elide;\r\n\s\s\s1079\s\s\s\s\sbool\sundo\s=\stagPtr->undo;\r\n(lldb)\sp\stextPtr->tkwin\r\n(Tk_Window)\s$37\s=\s0x0000000000000000\r\n(lldb)\r\n</verbatim>
J login fvogel
J mimetype text/x-fossil-wiki
K 39e510f69e6e641894d24582c61ba0c99ab21799
U fvogel
Z c217ba1a8be82e5b654fc0ba2eeb6dae