From: Tijl C. <ti...@ul...> - 2007-09-25 13:57:18
|
Hi everyone! I'm the maintainer of the FreeBSD package of sdcc and I ran into a bug that causes the build of the PIC device lib to segfault. Let me know if you need more info than the stuff below. This is with today's source snapshot, but 2.7.0 has the same problem. gmake[1]: Map '/home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/device/lib/pic/libsdcc' wordt binnengegaan [ CC ] ==> build/libsdcc/_mulint.o ../../../../bin/sdcc -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" Caught signal 11: SIGSEGV gmake[1]: *** [../build/libsdcc/_mulint.o] Fout 1 gmake[1]: Map '/home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/device/lib/pic/libsdcc' wordt verlaten gmake: *** [recurse] Fout 1 root@kalimero libsdcc# gdb ../../../../bin/sdcc GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-marcel-freebsd"... (gdb) run -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" Starting program: /home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/bin/sdcc -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" Program received signal SIGSEGV, Segmentation fault. OptimizeRegUsage (fregs=0x283c03f0, optimize_multi_uses=1, optimize_level=0) at pcoderegs.c:830 830 pc1 = rset1->item; (gdb) bt #0 OptimizeRegUsage (fregs=0x283c03f0, optimize_multi_uses=1, optimize_level=0) at pcoderegs.c:830 #1 0x080c30e3 in pCodeRegOptimizeRegUsage (level=1) at pcoderegs.c:1690 #2 0x080bdaea in AnalyzeFlow (level=1) at pcode.c:5215 #3 0x080be2d3 in AnalyzeBanking () at pcode.c:5272 #4 0x080f92af in picglue () at glue.c:1495 #5 0x08054cb5 in main (argc=11, argv=0xbfbfe85c, envp=0xbfbfe88c) at SDCCmain.c:2387 (gdb) print rset1 $1 = (set *) 0x5a5a5a5a So it's segfaulting because it tries to access 0x5a5a5a5a. This address is a malloc/free debugging feature. I haven't looked at any code yet, but it looks like rset1 was set to the contents of uninitialized memory. |
From: Tijl C. <ti...@ul...> - 2007-09-25 14:18:30
|
On Tuesday 25 September 2007 15:56:55 Tijl Coosemans wrote: > Hi everyone! > > I'm the maintainer of the FreeBSD package of sdcc and I ran into a bug > that causes the build of the PIC device lib to segfault. Let me know if > you need more info than the stuff below. > > This is with today's source snapshot, but 2.7.0 has the same problem. > > > gmake[1]: Map '/home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/device/lib/pic/libsdcc' wordt binnengegaan > [ CC ] ==> build/libsdcc/_mulint.o > ../../../../bin/sdcc -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" > Caught signal 11: SIGSEGV > gmake[1]: *** [../build/libsdcc/_mulint.o] Fout 1 > gmake[1]: Map '/home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/device/lib/pic/libsdcc' wordt verlaten > gmake: *** [recurse] Fout 1 > > root@kalimero libsdcc# gdb ../../../../bin/sdcc > GNU gdb 6.1.1 [FreeBSD] > Copyright 2004 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you are > welcome to change it and/or distribute copies of it under certain conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for details. > This GDB was configured as "i386-marcel-freebsd"... > (gdb) run -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" > Starting program: /home/root/build/home/root/ports/lang/sdcc-devel/work/sdcc/bin/sdcc -mpic14 -p16f877 --std-c99 -I. -I../../../include/pic --i-code-in-asm -o "../build/libsdcc/_mulint.o" -c "_mulint.c" > > Program received signal SIGSEGV, Segmentation fault. > OptimizeRegUsage (fregs=0x283c03f0, optimize_multi_uses=1, optimize_level=0) > at pcoderegs.c:830 > 830 pc1 = rset1->item; > (gdb) bt > #0 OptimizeRegUsage (fregs=0x283c03f0, optimize_multi_uses=1, > optimize_level=0) at pcoderegs.c:830 > #1 0x080c30e3 in pCodeRegOptimizeRegUsage (level=1) at pcoderegs.c:1690 > #2 0x080bdaea in AnalyzeFlow (level=1) at pcode.c:5215 > #3 0x080be2d3 in AnalyzeBanking () at pcode.c:5272 > #4 0x080f92af in picglue () at glue.c:1495 > #5 0x08054cb5 in main (argc=11, argv=0xbfbfe85c, envp=0xbfbfe88c) > at SDCCmain.c:2387 > (gdb) print rset1 > $1 = (set *) 0x5a5a5a5a > > > So it's segfaulting because it tries to access 0x5a5a5a5a. This address > is a malloc/free debugging feature. I haven't looked at any code yet, > but it looks like rset1 was set to the contents of uninitialized > memory. Apparently, 0xa5a5a5a5 means uninitialized just malloc()'ed memory, and 0x5a5a5a5a means already free()'ed. |
From: Raphael N. <rn...@we...> - 2007-09-27 22:55:10
|
Hi Tijl, >> I'm the maintainer of the FreeBSD package of sdcc and I ran into a bug >> that causes the build of the PIC device lib to segfault. Let me know if >> you need more info than the stuff below. >> >> This is with today's source snapshot, but 2.7.0 has the same problem. [dereferencing free()'d memory, details snipped] Thank you for the report---apparently FreeBSD links in some memory checker by default which Linux does not, so this bug (actually two of them...) went undiscovered until I set out to run SDCC under Valgrind's control. I fixed all issues pointed out by Valgrind in 2.7.3, r4920. If SDCC still breaks in the pic/pic16 libraries, please let me know! Kind regards, Raphael |
From: Tijl C. <ti...@ul...> - 2007-09-28 16:08:08
|
On Friday 28 September 2007 00:54:53 Raphael Neider wrote: >>> I'm the maintainer of the FreeBSD package of sdcc and I ran into a >>> bug that causes the build of the PIC device lib to segfault. Let me >>> know if you need more info than the stuff below. >>> >>> This is with today's source snapshot, but 2.7.0 has the same >>> problem. > > [dereferencing free()'d memory, details snipped] > > Thank you for the report---apparently FreeBSD links in some memory > checker by default which Linux does not, so this bug (actually two of > them...) went undiscovered until I set out to run SDCC under > Valgrind's control. Yes, it's something enabled on the development branch apparently. > I fixed all issues pointed out by Valgrind in 2.7.3, r4920. If SDCC > still breaks in the pic/pic16 libraries, please let me know! Everything seems to work now. Thank you very much! |