Re: [uClinux-dev] qemu coldfire SIGILL with pthread app
Hi Greg, Greg Ungerer wrote, > Hi Waldemar, > > On 26/05/16 22:05, Waldemar Brodkorb wrote: > > Greg Ungerer wrote, > >> On 20/05/16 14:20, Waldemar Brodkorb wrote: > >>> Greg Ungerer wrote, > On 16/05/16 19:54, Waldemar Brodkorb wrote: > > I compile and test the thread test app from here on > > Qemu coldfire emulation: > > http://debug.openadk.org/arm-pthreads/hello.c > > > > Sometimes it works, sometimes I get SIGILL. > > Tested with buildroot and qemu_m68k_mcf5208_defconfig. It uses gcc > > 4.9.3 and binutils 2.25.1. The kernel is 4.5.3 including the signal > > handler patch. uClibc-ng 1.0.14 is used. > > > > Any idea? > > Do you get the SIGILL when running without strace? > >>> > >>> Yes. > >>> > How often does it work, and not work? > >>> > >>> ~ # ill=0; for i in $(seq 1 50); do /test; if [ $? -ne 0 ]; then > >>> ill=$(($ill+1)) ;fi; sleep 2; done > >>> ~ # echo $ill > >>> 30 > >>> > >>> It is not always the same. > >> > >> Ok. I expect I would see it pretty easily though if I > >> run hello 100 times for example. > >> > >> > I have a setup with a gcc-5.3/binutils-2.25.1 toolchain building > linux-4.6 and using uClibc-ng-1.0.14 and using your hello.c test > app and I don't see any SIGILLs. Ran it quite a few times but > didn't see any. > >>> > >>> Hmm. I now changed to gcc 5.3.0 and see the same problem. > >>> Need to try linux-4.6. What version of Qemu are you using? > >>> I recently updated to 2.6.0. > >> > >> I was using an older 2.3.50. But I just pulled down 2.6 and > >> tried again. I still don't see any SIGILLs. > >> > >> Looking at your strace dump and mine it puzzles me that the initial > >> startup is a little different. On my dump the first output > >> write() is the 3rd system call. On your traces it is much later. > >> > >> Can you send me your hello (and hello.gdb) binaries? > > > > They are here: > > http://debug.openadk.org/coldfire/ > > Thanks. I can reproduce it with that binary easily. > > > > Are you using linuxthreads.old or linuxthreads.new? > > I use old, and new will be removed in the next uClibc-ng release. > > I am using the old linux threads. I have attached my uClibc-ng > config so you can see what I am using. > > I can see that your hello binary is a good bit smaller than mine. > The code generated looks quite different too. Do you compile apps > and libs with -msep-data? That is the exact reason. I used FLAT without -msep-data. When I use -msep-data I get no SIGILL. Any idea why simple FLAT breaks the binaries? best regards Waldemar ___ uClinux-dev mailing list uClinux-dev@uclinux.org http://mailman.uclinux.org/mailman/listinfo/uclinux-dev This message was resent by uclinux-dev@uclinux.org To unsubscribe see: http://mailman.uclinux.org/mailman/options/uclinux-dev
Re: [uClinux-dev] qemu coldfire SIGILL with pthread app
Hi Waldemar, On 26/05/16 22:05, Waldemar Brodkorb wrote: > Greg Ungerer wrote, >> On 20/05/16 14:20, Waldemar Brodkorb wrote: >>> Greg Ungerer wrote, On 16/05/16 19:54, Waldemar Brodkorb wrote: > I compile and test the thread test app from here on > Qemu coldfire emulation: > http://debug.openadk.org/arm-pthreads/hello.c > > Sometimes it works, sometimes I get SIGILL. > Tested with buildroot and qemu_m68k_mcf5208_defconfig. It uses gcc > 4.9.3 and binutils 2.25.1. The kernel is 4.5.3 including the signal > handler patch. uClibc-ng 1.0.14 is used. > > Any idea? Do you get the SIGILL when running without strace? >>> >>> Yes. >>> How often does it work, and not work? >>> >>> ~ # ill=0; for i in $(seq 1 50); do /test; if [ $? -ne 0 ]; then >>> ill=$(($ill+1)) ;fi; sleep 2; done >>> ~ # echo $ill >>> 30 >>> >>> It is not always the same. >> >> Ok. I expect I would see it pretty easily though if I >> run hello 100 times for example. >> >> I have a setup with a gcc-5.3/binutils-2.25.1 toolchain building linux-4.6 and using uClibc-ng-1.0.14 and using your hello.c test app and I don't see any SIGILLs. Ran it quite a few times but didn't see any. >>> >>> Hmm. I now changed to gcc 5.3.0 and see the same problem. >>> Need to try linux-4.6. What version of Qemu are you using? >>> I recently updated to 2.6.0. >> >> I was using an older 2.3.50. But I just pulled down 2.6 and >> tried again. I still don't see any SIGILLs. >> >> Looking at your strace dump and mine it puzzles me that the initial >> startup is a little different. On my dump the first output >> write() is the 3rd system call. On your traces it is much later. >> >> Can you send me your hello (and hello.gdb) binaries? > > They are here: > http://debug.openadk.org/coldfire/ Thanks. I can reproduce it with that binary easily. > Are you using linuxthreads.old or linuxthreads.new? > I use old, and new will be removed in the next uClibc-ng release. I am using the old linux threads. I have attached my uClibc-ng config so you can see what I am using. I can see that your hello binary is a good bit smaller than mine. The code generated looks quite different too. Do you compile apps and libs with -msep-data? Regards Greg # # Automatically generated file; DO NOT EDIT. # uClibc-ng 1.0.14 C Library Configuration # # TARGET_alpha is not set # TARGET_arc is not set # TARGET_arm is not set # TARGET_avr32 is not set # TARGET_bfin is not set # TARGET_c6x is not set # TARGET_cris is not set # TARGET_frv is not set # TARGET_h8300 is not set # TARGET_hppa is not set # TARGET_i386 is not set # TARGET_ia64 is not set # TARGET_lm32 is not set TARGET_m68k=y # TARGET_metag is not set # TARGET_microblaze is not set # TARGET_mips is not set # TARGET_nios2 is not set # TARGET_or1k is not set # TARGET_powerpc is not set # TARGET_sh is not set # TARGET_sparc is not set # TARGET_x86_64 is not set # TARGET_xtensa is not set # # Target Architecture Features and Options # TARGET_ARCH="m68k" FORCE_OPTIONS_FOR_ARCH=y TARGET_SUBARCH="" # UCLIBC_FORMAT_FLAT is not set UCLIBC_FORMAT_FLAT_SEP_DATA=y # UCLIBC_FORMAT_SHARED_FLAT is not set ARCH_HAS_DEPRECATED_SYSCALLS=y ARCH_BIG_ENDIAN=y # # Using Big Endian # # ARCH_HAS_MMU is not set UCLIBC_HAS_FLOATS=y # UCLIBC_HAS_FPU is not set UCLIBC_HAS_SOFT_FLOAT=y DO_C99_MATH=y # DO_XSI_MATH is not set # UCLIBC_HAS_FENV is not set UCLIBC_HAS_LONG_DOUBLE_MATH=y KERNEL_HEADERS="$(STAGEDIR)/include" UCLIBC_UCLINUX_BROKEN_MUNMAP=y HAVE_DOT_CONFIG=y # # General Library Settings # # DOPIC is not set ARCH_HAS_NO_SHARED=y ARCH_HAS_NO_LDSO=y UCLIBC_CTOR_DTOR=y # HAS_NO_THREADS is not set LINUXTHREADS_OLD=y # LINUXTHREADS_NEW is not set UCLIBC_HAS_THREADS=y # PTHREADS_DEBUG_SUPPORT is not set UCLIBC_HAS_SYSLOG=y UCLIBC_HAS_LFS=y # MALLOC is not set MALLOC_SIMPLE=y # MALLOC_GLIBC_COMPAT is not set # UCLIBC_HAS_OBSTACK is not set UCLIBC_DYNAMIC_ATEXIT=y COMPAT_ATEXIT=y UCLIBC_HAS_UTMPX=y UCLIBC_HAS_UTMP=y UCLIBC_SUSV2_LEGACY=y UCLIBC_SUSV3_LEGACY=y # UCLIBC_SUSV3_LEGACY_MACROS is not set UCLIBC_SUSV4_LEGACY=y # UCLIBC_STRICT_HEADERS is not set # UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y # UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set UCLIBC_HAS___PROGNAME=y UCLIBC_HAS_PTY=y ASSUME_DEVPTS=y UNIX98PTY_ONLY=y UCLIBC_HAS_GETPT=y UCLIBC_HAS_LIBUTIL=y UCLIBC_HAS_TM_EXTENSIONS=y UCLIBC_HAS_TZ_CACHING=y UCLIBC_HAS_TZ_FILE=y UCLIBC_HAS_TZ_FILE_READ_MANY=y UCLIBC_TZ_FILE_PATH="/etc/TZ" UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y # # Advanced Library Settings # UCLIBC_PWD_BUFFER_SIZE=256 UCLIBC_GRP_BUFFER_SIZE=256 # # Support various families of functions # UCLIBC_LINUX_MODULE_26=y # UCLIBC_LINUX_MODULE_24 is not set UCLIBC_LINUX_SPECIFIC=y UCLIBC_HAS_GNU_ERROR=y UCLIBC_BSD_SPECIFIC=y UCLIBC_HAS_BSD_ERR=y # UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set # UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set # UCLIBC_NTP_LEGACY is not set # UCLIBC_SV4_DEPRECATED is not set UCLIBC_HAS_REALTIME=y