Tk Source Code

View Ticket
Login
Ticket UUID: 3a56576157559e6ac194cd37defb791f525d876d
Title: Test text-27.24 & text-30.3 seg faults on linux
Type: Bug Version: Branch revised_text
Submitter: pointsman Created on: 2017-02-23 12:19:48
Subsystem: 18. [text] Assigned To: nobody
Priority: 5 Medium Severity: Severe
Status: Closed Last Modified: 2017-03-12 13:20:37
Resolution: Fixed Closed By: fvogel
    Closed on: 2017-03-12 13:20:37
Description:
I build tk branch revised_text, 4d30798baa3 against a current tcl
trunk build, with --enable-symbols and w/ -DPURIFY, on linux, gcc
4.7.1

make test TESTFLAGS='-file text.test -match text-27.24'

seg faults.

Valgrind reports:

==1660== Memcheck, a memory error detector
==1660== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==1660== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==1660== Command: ./tktest /home/rolf/tcltk/core/tk-head/unix/../tests/all.tcl -geometry +0+0 -file text.test -match text-27.24
==1660== 
==1660== Invalid read of size 1
==1660==    at 0x4C2E1B4: __strcmp_sse42 (vg_replace_strmem.c:845)
==1660==    by 0x5D6D09C: _XimUnRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D54A34: XUnregisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FE06B3: InstantiateIMCallback (tkUnixEvent.c:681)
==1660==    by 0x5D6CF94: _XimRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D5499D: XRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FDFDC8: TkpOpenDisplay (tkUnixEvent.c:184)
==1660==    by 0x4EC1234: GetScreen (tkWindow.c:463)
==1660==    by 0x4EC0FF2: CreateTopLevelWindow (tkWindow.c:346)
==1660==    by 0x4EC1CA7: TkCreateMainWindow (tkWindow.c:852)
==1660==    by 0x4ED09C7: CreateFrame (tkFrame.c:582)
==1660==    by 0x4ED0503: TkListCreateFrame (tkFrame.c:468)
==1660==  Address 0x7b5fb90 is 0 bytes inside a block of size 10 free'd
==1660==    at 0x4C2B51A: free (vg_replace_malloc.c:530)
==1660==    by 0x5D636B1: XSetLocaleModifiers (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FE0745: OpenIM (tkUnixEvent.c:725)
==1660==    by 0x4FE0687: InstantiateIMCallback (tkUnixEvent.c:680)
==1660==    by 0x5D6CF94: _XimRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D5499D: XRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FDFDC8: TkpOpenDisplay (tkUnixEvent.c:184)
==1660==    by 0x4EC1234: GetScreen (tkWindow.c:463)
==1660==    by 0x4EC0FF2: CreateTopLevelWindow (tkWindow.c:346)
==1660==    by 0x4EC1CA7: TkCreateMainWindow (tkWindow.c:852)
==1660==    by 0x4ED09C7: CreateFrame (tkFrame.c:582)
==1660==    by 0x4ED0503: TkListCreateFrame (tkFrame.c:468)
==1660==  Block was alloc'd at
==1660==    at 0x4C2C614: malloc (vg_replace_malloc.c:299)
==1660==    by 0x5D63275: _XlcDefaultMapModifiers (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D63695: XSetLocaleModifiers (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FE0745: OpenIM (tkUnixEvent.c:725)
==1660==    by 0x4FDFD9C: TkpOpenDisplay (tkUnixEvent.c:183)
==1660==    by 0x4EC1234: GetScreen (tkWindow.c:463)
==1660==    by 0x4EC0FF2: CreateTopLevelWindow (tkWindow.c:346)
==1660==    by 0x4EC1CA7: TkCreateMainWindow (tkWindow.c:852)
==1660==    by 0x4ED09C7: CreateFrame (tkFrame.c:582)
==1660==    by 0x4ED0503: TkListCreateFrame (tkFrame.c:468)
==1660==    by 0x4EC53D5: Initialize (tkWindow.c:3240)
==1660==    by 0x4EC46A5: Tk_Init (tkWindow.c:2900)
==1660== 
==1660== Invalid read of size 1
==1660==    at 0x4C2E1CB: __strcmp_sse42 (vg_replace_strmem.c:845)
==1660==    by 0x5D6D09C: _XimUnRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D54A34: XUnregisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FE06B3: InstantiateIMCallback (tkUnixEvent.c:681)
==1660==    by 0x5D6CF94: _XimRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D5499D: XRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FDFDC8: TkpOpenDisplay (tkUnixEvent.c:184)
==1660==    by 0x4EC1234: GetScreen (tkWindow.c:463)
==1660==    by 0x4EC0FF2: CreateTopLevelWindow (tkWindow.c:346)
==1660==    by 0x4EC1CA7: TkCreateMainWindow (tkWindow.c:852)
==1660==    by 0x4ED09C7: CreateFrame (tkFrame.c:582)
==1660==    by 0x4ED0503: TkListCreateFrame (tkFrame.c:468)
==1660==  Address 0x7b5fb91 is 1 bytes inside a block of size 10 free'd
==1660==    at 0x4C2B51A: free (vg_replace_malloc.c:530)
==1660==    by 0x5D636B1: XSetLocaleModifiers (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FE0745: OpenIM (tkUnixEvent.c:725)
==1660==    by 0x4FE0687: InstantiateIMCallback (tkUnixEvent.c:680)
==1660==    by 0x5D6CF94: _XimRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D5499D: XRegisterIMInstantiateCallback (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FDFDC8: TkpOpenDisplay (tkUnixEvent.c:184)
==1660==    by 0x4EC1234: GetScreen (tkWindow.c:463)
==1660==    by 0x4EC0FF2: CreateTopLevelWindow (tkWindow.c:346)
==1660==    by 0x4EC1CA7: TkCreateMainWindow (tkWindow.c:852)
==1660==    by 0x4ED09C7: CreateFrame (tkFrame.c:582)
==1660==    by 0x4ED0503: TkListCreateFrame (tkFrame.c:468)
==1660==  Block was alloc'd at
==1660==    at 0x4C2C614: malloc (vg_replace_malloc.c:299)
==1660==    by 0x5D63275: _XlcDefaultMapModifiers (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x5D63695: XSetLocaleModifiers (in /usr/lib64/libX11.so.6.3.0)
==1660==    by 0x4FE0745: OpenIM (tkUnixEvent.c:725)
==1660==    by 0x4FDFD9C: TkpOpenDisplay (tkUnixEvent.c:183)
==1660==    by 0x4EC1234: GetScreen (tkWindow.c:463)
==1660==    by 0x4EC0FF2: CreateTopLevelWindow (tkWindow.c:346)
==1660==    by 0x4EC1CA7: TkCreateMainWindow (tkWindow.c:852)
==1660==    by 0x4ED09C7: CreateFrame (tkFrame.c:582)
==1660==    by 0x4ED0503: TkListCreateFrame (tkFrame.c:468)
==1660==    by 0x4EC53D5: Initialize (tkWindow.c:3240)
==1660==    by 0x4EC46A5: Tk_Init (tkWindow.c:2900)
==1660== 
==1660== Invalid read of size 8
==1660==    at 0x4F422D6: InsertChars (tkText.c:4983)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==    by 0x400FD9: main (tkAppInit.c:78)
==1660==  Address 0x7b274b0 is 0 bytes inside a block of size 40 free'd
==1660==    at 0x4C2B51A: free (vg_replace_malloc.c:530)
==1660==    by 0x52A679B: TclpFree (tclAlloc.c:722)
==1660==    by 0x52BECA5: Tcl_Free (tclCkalloc.c:1221)
==1660==    by 0x4F422BA: InsertChars (tkText.c:4977)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==  Block was alloc'd at
==1660==    at 0x4C2C614: malloc (vg_replace_malloc.c:299)
==1660==    by 0x52A6781: TclpAlloc (tclAlloc.c:699)
==1660==    by 0x52BEAA4: Tcl_Alloc (tclCkalloc.c:1058)
==1660==    by 0x4F59298: TkBTreeInsertChars (tkTextBTree.c:4217)
==1660==    by 0x4F42168: InsertChars (tkText.c:4952)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660== 
==1660== Invalid read of size 8
==1660==    at 0x4F4230C: InsertChars (tkText.c:4984)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==    by 0x400FD9: main (tkAppInit.c:78)
==1660==  Address 0x7b274b8 is 8 bytes inside a block of size 40 free'd
==1660==    at 0x4C2B51A: free (vg_replace_malloc.c:530)
==1660==    by 0x52A679B: TclpFree (tclAlloc.c:722)
==1660==    by 0x52BECA5: Tcl_Free (tclCkalloc.c:1221)
==1660==    by 0x4F422BA: InsertChars (tkText.c:4977)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==  Block was alloc'd at
==1660==    at 0x4C2C614: malloc (vg_replace_malloc.c:299)
==1660==    by 0x52A6781: TclpAlloc (tclAlloc.c:699)
==1660==    by 0x52BEAA4: Tcl_Alloc (tclCkalloc.c:1058)
==1660==    by 0x4F59298: TkBTreeInsertChars (tkTextBTree.c:4217)
==1660==    by 0x4F42168: InsertChars (tkText.c:4952)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660== 
==1660== Invalid read of size 8
==1660==    at 0x4F42317: InsertChars (tkText.c:4984)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==    by 0x400FD9: main (tkAppInit.c:78)
==1660==  Address 0x7b274c0 is 16 bytes inside a block of size 40 free'd
==1660==    at 0x4C2B51A: free (vg_replace_malloc.c:530)
==1660==    by 0x52A679B: TclpFree (tclAlloc.c:722)
==1660==    by 0x52BECA5: Tcl_Free (tclCkalloc.c:1221)
==1660==    by 0x4F422BA: InsertChars (tkText.c:4977)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==  Block was alloc'd at
==1660==    at 0x4C2C614: malloc (vg_replace_malloc.c:299)
==1660==    by 0x52A6781: TclpAlloc (tclAlloc.c:699)
==1660==    by 0x52BEAA4: Tcl_Alloc (tclCkalloc.c:1058)
==1660==    by 0x4F59298: TkBTreeInsertChars (tkTextBTree.c:4217)
==1660==    by 0x4F42168: InsertChars (tkText.c:4952)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660== 
==1660== Invalid read of size 8
==1660==    at 0x4F4232D: InsertChars (tkText.c:4985)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==    by 0x400FD9: main (tkAppInit.c:78)
==1660==  Address 0x7b274c8 is 24 bytes inside a block of size 40 free'd
==1660==    at 0x4C2B51A: free (vg_replace_malloc.c:530)
==1660==    by 0x52A679B: TclpFree (tclAlloc.c:722)
==1660==    by 0x52BECA5: Tcl_Free (tclCkalloc.c:1221)
==1660==    by 0x4F422BA: InsertChars (tkText.c:4977)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==  Block was alloc'd at
==1660==    at 0x4C2C614: malloc (vg_replace_malloc.c:299)
==1660==    by 0x52A6781: TclpAlloc (tclAlloc.c:699)
==1660==    by 0x52BEAA4: Tcl_Alloc (tclCkalloc.c:1058)
==1660==    by 0x4F59298: TkBTreeInsertChars (tkTextBTree.c:4217)
==1660==    by 0x4F42168: InsertChars (tkText.c:4952)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660== 
==1660== Invalid read of size 8
==1660==    at 0x4F42338: InsertChars (tkText.c:4985)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==    by 0x400FD9: main (tkAppInit.c:78)
==1660==  Address 0x7b274d0 is 32 bytes inside a block of size 40 free'd
==1660==    at 0x4C2B51A: free (vg_replace_malloc.c:530)
==1660==    by 0x52A679B: TclpFree (tclAlloc.c:722)
==1660==    by 0x52BECA5: Tcl_Free (tclCkalloc.c:1221)
==1660==    by 0x4F422BA: InsertChars (tkText.c:4977)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660==    by 0x4EAA394: Tk_MainEx (tkMain.c:342)
==1660==  Block was alloc'd at
==1660==    at 0x4C2C614: malloc (vg_replace_malloc.c:299)
==1660==    by 0x52A6781: TclpAlloc (tclAlloc.c:699)
==1660==    by 0x52BEAA4: Tcl_Alloc (tclCkalloc.c:1058)
==1660==    by 0x4F59298: TkBTreeInsertChars (tkTextBTree.c:4217)
==1660==    by 0x4F42168: InsertChars (tkText.c:4952)
==1660==    by 0x4F44CA2: TextInsertCmd (tkText.c:6153)
==1660==    by 0x4F3A77A: TextWidgetObjCmd (tkText.c:2155)
==1660==    by 0x52B2065: Dispatch (tclBasic.c:4365)
==1660==    by 0x52B20EB: TclNRRunCallbacks (tclBasic.c:4398)
==1660==    by 0x52B19B4: Tcl_EvalObjv (tclBasic.c:4128)
==1660==    by 0x52B3EA5: TclEvalEx (tclBasic.c:5267)
==1660==    by 0x53C8F0B: Tcl_FSEvalFileEx (tclIOUtil.c:1826)
==1660== 
==1660== 
==1660== HEAP SUMMARY:
==1660==     in use at exit: 2,996,073 bytes in 37,313 blocks
==1660==   total heap usage: 651,958 allocs, 614,645 frees, 67,788,157 bytes allocated
==1660== 
==1660== LEAK SUMMARY:
==1660==    definitely lost: 12,832 bytes in 22 blocks
==1660==    indirectly lost: 600 bytes in 21 blocks
==1660==      possibly lost: 336,303 bytes in 7,419 blocks
==1660==    still reachable: 2,646,338 bytes in 29,851 blocks
==1660==         suppressed: 0 bytes in 0 blocks
==1660== Rerun with --leak-check=full to see details of leaked memory
==1660== 
==1660== For counts of detected and suppressed errors, rerun with: -v
==1660== ERROR SUMMARY: 15 errors from 7 contexts (suppressed: 1 from 1)
User Comments: fvogel added on 2017-03-12 13:20:37:

[cb2d2b5a] has fixed the three failing tests you mention: textIndex-1.6, textIndex-11.6 and textIndex-11.7

To avoid confusion, please open new tickets for further issues.


pointsman added on 2017-03-01 17:17:18:
This test constrain tests, if the test command testtext is known by
the running interperter. Take a look at:

http://core.tcl.tk/tk/artifact/49b78857632be548?ln=215

The command itself is created in generic/tktest.c:

http://core.tcl.tk/tk/artifact/29336f1097176214?ln=266-267

The implementation is in tktext.c:

http://core.tcl.tk/tk/artifact/c8420514c6269f1e?ln=11219-11376

For testing, tk (as tcl also do) build a special app with additional
test commands.

If you do `make test`, this test app with additional cmds will be
build automatically. A `make tktest` builds the test app without
running the tests.

gcramer added on 2017-03-01 16:44:08:
When I'm testing all the test cases with constraint "testtext" will be skipped. What should I do to fulfill this constraint? What's the reason behind this constraint?

pointsman added on 2017-03-01 15:58:32:
After commit [8a30bcfd6e7be3], now the test text-30.3 passes even on 64-bit linux for me, no abort any more.

Running all the text widget tests (TESTFLAGS='-file text*.test) now only 3 tests are failing. Just to note them here (haven't checked for relevance):

==== textIndex-1.6 TkTextMakeByteIndex FAILED
==== Contents of test case:

    # (indexPtr->linePtr == NULL)
    testtext .t byteindex 9 2

---- Result was:
7.6 6
---- Result should have been (exact matching):
8.0 0
==== textIndex-1.6 FAILED



==== textIndex-11.6 TkTextIndexForwBytes FAILED
==== Contents of test case:

    testtext .t forwbytes 2.3 58

---- Result was:
7.6 6
---- Result should have been (exact matching):
8.0 0
==== textIndex-11.6 FAILED



==== textIndex-11.7 TkTextIndexForwBytes FAILED
==== Contents of test case:

    testtext .t forwbytes 2.3 59

---- Result was:
7.6 6
---- Result should have been (exact matching):
8.0 0
==== textIndex-11.7 FAILED

pointsman added on 2017-02-28 17:15:16:
I'm sorry to report this, but still, even with [84b0dd10]:

---- text-30.3 start
tktest: /home/rolf/tcltk/core/tk-head/unix/../generic/tkTextDisp.c:9979: YScrollByPixels: Assertion `dInfoPtr->newTopPixelOffset < CalculateDisplayLineHeight(textPtr, &textPtr->topIndex, ((void *)0))' failed.
Aborted

gcramer added on 2017-02-28 14:02:35:
I could fix a major bug in line metric calculation (revision [84b0dd10]), this problem was reproducible on my 32 bit system, and occurred in application ScidVsPC (with inlined text widget). Probably this fix has an impact on test case text-30.3. I cannot verify, because this assertion only happened on 64 bit platforms, and I do not have a 64 bit machine.

fvogel added on 2017-02-27 21:37:56:
I can reproduce the failed assertion in text-30.3 on Linux Debian 8 (64 bits).

gcramer added on 2017-02-27 11:01:42:
> text-30.3
>
> still aborts for me on 64-bit linux with
>
> tktest: /home/rolf/tcltk/core/tk-head/unix/../generic/tkTextDisp.c:9970: > 
> YScrollByPixels: Assertion `TkTextIndexIsEndOfText(&textPtr->topIndex) ?
> dInfoPtr->newTopPixelOffset == 0 : dInfoPtr->newTopPixelOffset < 
> CalculateDisplayLineHeight(textPtr, &textPtr->topIndex, ((void *)0))' failed.
> Aborted

Bad, I don't have a 64 bit machine. A friend of mine has another problem on a 64 bit machine with his application (inline version of the text widget). It seems that any 64 bit related problem exists, and currently I try to figure it out with the help of the friend. (Unluckily he is not firm with the source code, and debugging with gdb is also not his speciality, so this task is a bit difficult.)

pointsman added on 2017-02-27 10:26:17:
I additionaly confirm, that the seg faulting tests

text-27.24
textWind-10.9

now pass even on 64-bit linux, with [5cb369d839e6] (descendant of [5e22bb83])

Though, test

text-30.3

still aborts for me on 64-bit linux with

tktest: /home/rolf/tcltk/core/tk-head/unix/../generic/tkTextDisp.c:9970: YScrollByPixels: Assertion `TkTextIndexIsEndOfText(&textPtr->topIndex) ? dInfoPtr->newTopPixelOffset == 0 : dInfoPtr->newTopPixelOffset < CalculateDisplayLineHeight(textPtr, &textPtr->topIndex, ((void *)0))' failed.
Aborted

I re-opened the ticket entry, although the ticket title unfortunately talk only about text-27.24 and I added my findings about the other tests only in comments. 
I think, this last test run aborting problem could be handled within this ticket, but if you prefer another ticket with better title lemme know and I re-submit.

gcramer added on 2017-02-27 09:47:21:
Fixed with [5e22bb83], tested on a 32 bit platform.

pointsman added on 2017-02-23 20:14:08:
More findings:

The test text-30.3 aborts with:

tktest: /home/rolf/tcltk/core/tk-head/unix/../generic/tkTextDisp.c:9963: YScrollByPixels: Assertion `TkTextIndexIsEndOfText(&textPtr->topIndex) ? dInfoPtr->newTopPixelOffset == 0 : dInfoPtr->newTopPixelOffset < CalculateDisplayLineHeight(textPtr, &textPtr->topIndex, ((void *)0))' failed.
Aborted

The test textWind-10.9 seg faults.

Thats all for me on that level. All other text*.test tests don't crash
for me. Looking at the failing tests is another task. At least some of
them are not 'real' failures, from glancing over them.

pointsman added on 2017-02-23 19:57:35:
Can't confirm. Still, after updateing to e8542fce34c (and even on the
tip of revised_text) and with my build - as above with a current tcl
trunk build, with --enable-symbols and w/ -DPURIFY, on linux, gcc
4.7.1 - text-27.24 seg faults for me.

Since you see it pass, we need to find, what we do different. Do you
noticed, that I build tk with tcl trunk build with -DPURIFY?

This ticket - or any other ticket by me or, I'm sure, everybody else -
isn't meant as offence. I'm pretty aware (as anybody else working in
this), that this is a work in progress. I just try to provide a
helping hand with testing and, if happens, report, what looks wrong to
me.

I asked fvogel on the tclers chat, where to report my findings and he
proposed the tk tracker. Which seemed OK to me; at least the tested
branch is in the same repository.

If you prefer other ways of reporting of such findings just let us
know.

fvogel added on 2017-02-23 19:45:40:
When asked by the OP in the chat, I was the one who suggested him to open a ticket.
Tickets are cheap, can easily be linked to the fix in the fossil repo, and I don't care that the branch is not "approved as stable". Problem could be difficult to fix, could exist for a long time, and well, better have a ticket than a forgotten issue.

gcramer added on 2017-02-23 18:46:34:
Newer revision e8542fce34ce0ec8ad91b0fff24341a2d852fc8f is passing the test.

BTW: this ticket is invalid, this branch is not yet approved as stable.