Tk Source Code

View Ticket
Login
2020-07-18
15:47 Closed ticket [917195ffff]: TkMacOSXXPutPixel() / tkdvi plus 9 other changes artifact: 67efb3e16a user: chrstphrchvz
2006-06-18
15:45 Ticket [917195ffff]: 1 change artifact: cbd3672e73 user: das
2004-03-18
22:41 Ticket [917195ffff]: 4 changes artifact: d472b747d4 user: quignard
2004-03-17
17:38 Ticket [917195ffff]: 4 changes artifact: 62b84253a9 user: das
17:32 Ticket [917195ffff]: 6 changes artifact: d79f072497 user: quignard
17:30 Ticket [917195ffff]: 2 changes artifact: 5030b10ab9 user: dkf
17:19 Ticket [917195ffff]: 4 changes artifact: f8eff76c68 user: quignard
2004-03-16
17:52 Ticket [917195ffff]: 1 change artifact: 2a5cd608d9 user: dkf
17:07 Ticket [917195ffff]: 1 change artifact: c126b605f2 user: quignard
10:06 New ticket [917195ffff]. artifact: 0d4a478f4e user: quignard

Ticket UUID: 917195
Title: TkMacOSXXPutPixel() / tkdvi
Type: Bug Version: None
Submitter: quignard Created on: 2004-03-16 10:06:34
Subsystem: 66. Aqua Window Operations Assigned To: aku
Priority: 4 Severity: Minor
Status: Closed Last Modified: 2020-07-18 15:47:00
Resolution: Out of Date Closed By: chrstphrchvz
    Closed on: 2020-07-18 15:47:00
Description:
Submitted by Matthieu Quignard (quignard@loria.fr) as 
requested by Daniel A. Steffen (das)

Context : building tkdvi (0.4) by Anselm Lingnau, on MacOS 
X (10.2.8) with Tcl/Tk Aqua (8.4.6).

Configure :
set tcldir=/Library/Frameworks/Tcl.framework/Versions/
Current
set tclincdir=$tcldir/Headers
set tkdir=/Library/Frameworks/Tk.framework/Versions/
Current
set tkincdir=$tkdir/Headers
set kpathdir=/sw/lib
set kpathincdir=/sw/include/kpathsea
(kpathsea got from fink tetex-dev)

./configure --with-tcl=$tcldir
--with-tclinclude=$tclincdir --
with-tk=$tkdir --with-tkinclude=$tkincdir --with-
kpathsea=$kpathdir 
--with-kpathseainclude=$kpathincdir --enable-debug --
disable-threads

Fix the Makefile in ./dvi :
* Add -DHAVE_PROTOTYPES=1 to compile with gcc 3.3 and 
remove -DUSE_STUBS_TK=1 -DUSE_STUBS_TCL=1
* link with -L/Library/Frameworks/Tk.framework/Versions/
8.4 -L/Library/Frameworks/Tcl.framework/Versions/8.4 -
framework Tcl -framework Tk -lpthread -framework 
CoreFoundation

Compiling and linking are succesfull.

Testing (tkdvi testdvi/mini) leads to Segmentation fault.

Here is the crash report :
Date/Time:  2004-03-16 10:12:24 +0100
OS Version: 10.2.8 (Build 6R73)
Host:       vercors.loria.fr

Command:    Wish Shell
PID:        2138

Exception:  EXC_BAD_ACCESS (0x0001)
Codes:      KERN_INVALID_ADDRESS (0x0001) at 0xffff0000

Thread 0 Crashed:
 #0   0x91ad9754 in SetCPixel
 #1   0x0b094518 in TkMacOSXXPutPixel
 #2   0x01338fc0 in GlyphToImageShrink
 #3   0x013391c4 in RenderGlyph
 #4   0x013326fc in Dvi_DoInterpret
 #5   0x01339a58 in DviImgDisplay
 #6   0x0b03b044 in Tk_RedrawImage
 #7   0x0b013bac in DisplayImage
 #8   0x0b00ef5c in DisplayCanvas
 #9   0x0a066f74 in TclServiceIdle
 #10  0x0a056910 in Tcl_DoOneEvent
 #11  0x0b033628 in MapFrame
 #12  0x0a066f74 in TclServiceIdle
 #13  0x0a056910 in Tcl_DoOneEvent
 #14  0x0b02d2f8 in Tk_MainLoop
 #15  0x0b04ab50 in Tk_MainEx
 #16  0x00010180 in 0x10180
 #17  0x0000ffa8 in 0xffa8
 #18  0x0000fe28 in 0xfe28

Thread 1:
 #0   0x9002568c in select
 #1   0x0b08a658 in NotifierThreadProc
 #2   0x90020c28 in _pthread_body

PPC Thread State:
  srr0: 0x91ad9754 srr1: 0x0200f030                vrsave: 
0x00000000
   xer: 0x20000000   lr: 0x91ad9740  ctr: 0x902216d0   mq: 
0x00000000
    r0: 0x91ad9740   r1: 0xbfffef80   r2: 0x01436788   r3: 
0x00000000
    r4: 0x00000000   r5: 0xbffff048   r6: 0x69012501   r7: 
0x0133c9d8
    r8: 0x0128623c   r9: 0xffff0000  r10: 0x0133c8d8  r11: 
0xa1a50cd0
   r12: 0x902216d0  r13: 0x00000000  r14: 0x00000000  
r15: 0x00000000
   r16: 0xbffff184  r17: 0xbffff180  r18: 0x0140ce08  r19: 
0x00000005
   r20: 0x00000000  r21: 0x01286234  r22: 0x00000000  
r23: 0x00000008
   r24: 0x00000039  r25: 0xbffff048  r26: 0x00000000  r27: 
0x00000000
   r28: 0x69012501  r29: 0x00000000  r30: 0x0129be08  
r31: 0x01338d3c
User Comments: chrstphrchvz added on 2020-07-18 15:47:00:

Closing Carbon-era ticket as out-of-date. TkMacOSXXPutPixel() was replaced by ImagePutPixel() in Cocoa Tk, which lacks the QuickDraw calls involved in the crash described here.


quignard added on 2004-03-18 22:41:24:
Logged In: YES 
user_id=999056

Here is what I got :
x = 0
y = 0
cPix : red = green = blue = 255
image = (XImage *) 0xb30b88
image->data = 0xb44408 "ÿÿÿÿ"

BUT :
(gdb) call (void) QDDebugPrintPortInfo(image->data)
Program received signal EXC_BAD_ACCESS, Could not access 
memory.
0xb97213f4 in GetPortHiliteColor ()

das added on 2004-03-17 17:38:17:
Logged In: YES 
user_id=90580

set a breakpoint in gdb on TkMacOSXXPutPixel() (tk/macosx/
tkMacOSXXStubs.c) and check that
- image->data is not NULL
- image->data is a calid quickdraw port
  (via gdb function 'call (void) QDDebugPrintPortInfo(image-
>data)')
- x,y are valid coordinates in the image
- cpix is a valid color value

quignard added on 2004-03-17 17:32:23:
Logged In: YES 
user_id=999056

ERRATUM. It IS actually a bug in XPutPixel, I took the wrong test file.
XPutPixel(glyphImage, x, y, 0) does not work better as the former 
one. Sorry.
MQ

quignard added on 2004-03-17 17:19:22:
Logged In: YES 
user_id=999056

I changed the last parameter in function XPutPixel (tkdvi/dvi/image.c), 
and set it to 0 : there is no SegFault anymore...

Before :
XPutPixel(glyphImage, x, y,
              colorContextPtr->pixelTable[theSample]->pixel);
After :   
XPutPixel(glyphImage, x, y, 0);

Perhaps we should look closer to ColorContext *colorContextPtr...