I'd be interested in the answer to this question also - although our situation is different: - We have seen the same crash you observed. However - It happens *very* rarely. Over a period of 12 months I've seen it 3 times. Thus in >99.9(9)% of bootups it works fine. However - once it gets into this state - chances are it can be repro'd. - We have no idea how to reproduce the problem. - We use a pretty old version of ecos (1.3 based). - We use gcc 2.95.3 - Our CPU is Xscale
Looking at the differences (eg. reproducibility) I think that the root cause of our problems is likely to be different. Nevertheless I'd be interested in the solution to your problem. Maybe it applies to us also. Just looking at our symptoms I'd think there's some uninitialized variable somewhere in early ecos startup. And most of the times it contains a value not causing trouble. Only occasionally ... . Regards, Kurt Siedenburg -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Guennadi Liakhovetski Sent: Friday, February 09, 2007 1:53 AM To: Gary Thomas Cc: [email protected] Subject: Re: RedBoot built with gcc 3.4.4 On Fri, 9 Feb 2007, Guennadi Liakhovetski wrote: > Looking further Auch... I came as far as to the loop /*---------------------------------------------------------------------- --*/ /* C++ support - run initial constructors */ #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG cyg_bool cyg_hal_stop_constructors; #endif typedef void (*pfunc) (void); extern pfunc __CTOR_LIST__[]; extern pfunc __CTOR_END__[]; void cyg_hal_invoke_constructors (void) { #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG static pfunc *p = &__CTOR_END__[-1]; cyg_hal_stop_constructors = 0; for (; p >= __CTOR_LIST__; p--) { diag_printf("Invoking constructor @ 0x%08x\n", *p); (*p) (); if (cyg_hal_stop_constructors) { p--; break; } } #else pfunc *p; for (p = &__CTOR_END__[-1]; p >= __CTOR_LIST__; p--) { diag_printf("Invoking constructor @ 0x%08x\n", *p); (*p) (); } #endif And put the diag_printf() there... And it prints 1 address and that's it... So, do I understand it right that here it is supposed to call C++ constructors?... Oh, no... and already in the first one it crashes... So, some C++ internal calling conventions have changed. I am pretty helpless in what concerns C++ ABI... Anyone? Thanks Guennadi --------------------------------- Guennadi Liakhovetski, Ph.D. DSA Daten- und Systemtechnik GmbH Pascalstr. 28 D-52076 Aachen Germany
