From: SourceForge.net <no...@so...> - 2013-01-26 16:14:15
|
Bugs item #3601804, was opened at 2013-01-22 11:49 Message generated for change (Comment added) made by pooryorick You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=3601804&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 38. Init - Library - Autoload Group: current: 8.6.0 Status: Open Resolution: None Priority: 5 Private: No Submitted By: Poor Yorick (pooryorick) Assigned to: Jan Nijtmans (nijtmans) Summary: platformCPUID segmentation fault on Darwin Initial Comment: platform-3.1 results in segmentation fault. the CPUID instruction is documented to clobber eax, ebx, ecx, and edx. The code clobbers edi, so chaning the list of clobbers in the assembly code in TclWinCPUID may be a good fix for the problem. It cured the segmentation fault in my case: "edi","ebx","ecx","edx" "eax" does not need to be listed, since the code expects it to be clobbered. ---------------------------------------------------------------------- >Comment By: Poor Yorick (pooryorick) Date: 2013-01-26 08:14 Message: I've found that using the 64-bit register names rbx and rsi with Jan's latest changes resolves the segmentation fault problem. I think the same would probably be true with the original code. ---------------------------------------------------------------------- Comment By: Jan Nijtmans (nijtmans) Date: 2013-01-26 07:08 Message: The CPUID stuff came in the core for Cygwin, but actually it's processor-specific, not OS-specific. So it should simply work fine on any Intel or compatible processor, even on Darwin and Solaris. My big question is: Why is pooryorick the only one getting a segfault? This code is already in for more than half a year, and nobody else noticed a segmentation fault on Darwin in any of the past releases. This sounds to me like a "Works for Me", but I'm willing to give it some more time until someone comes up with a bright idea what's going on here. My best guess would be a buggy compiler. Regards, Jan Nijtmans ---------------------------------------------------------------------- Comment By: Andreas Kupries (andreas_kupries) Date: 2013-01-25 11:53 Message: Where and why do we need this CPUID stuff in the Tcl core ? ---------------------------------------------------------------------- Comment By: Poor Yorick (pooryorick) Date: 2013-01-25 11:39 Message: This host is Mac OS X 10.6.8 (Darwin 10.8.0). Still getting a segmentation fault with your latest changes. ---------------------------------------------------------------------- Comment By: Jan Nijtmans (nijtmans) Date: 2013-01-24 14:04 Message: Found some other cpuid example code for Darwin. Committed a version now that doesn't use the edi register any more. Does that help? ---------------------------------------------------------------------- Comment By: Jan Nijtmans (nijtmans) Date: 2013-01-24 13:49 Message: >Poor, what platform are you using? Just read from the title that it was Darwin..... What version? ---------------------------------------------------------------------- Comment By: Jan Nijtmans (nijtmans) Date: 2013-01-24 13:35 Message: Had to revert the change on all branches: on i386, ebx is the PIC register, which cannot be used in assembler. The asm code already saves ebx before the cpuid, and restores it afterwards, so in reality ebx is not clobbered at all: The original code was correct...... Poor, what platform are you using? ---------------------------------------------------------------------- Comment By: Jan Nijtmans (nijtmans) Date: 2013-01-22 14:00 Message: Good analysis, Thanks! However, ecx and edx are already output registers, so they cannot be mentioned twice. gcc will complain with "can’t find a register in class ‘DREG’ while reloading ‘asm’" However, "ebx" was indeed missing as clobber register. Fixed now in core-8-4-branch, core-8-5-branch and trunk. ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2013-01-22 11:54 Message: Passing to test originator. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=3601804&group_id=10894 |