Re: [uClinux-dev] qemu coldfire SIGILL with pthread app

2016-05-27 Thread Waldemar Brodkorb
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

2016-05-27 Thread Greg Ungerer
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