On Thu, 20 May 2010, Tamas TEVESZ wrote:

Hi,

> as $subject says. i have bisected the problem to have been introduced  
> in r12466 (r12465 is fine).
> r12466 only says segmentation fault, leaving an empty hb_out.log; 
> r14542 is a bit more verbose with:
> Application Internal Error - 
> /home/ice/w/xhb/hbci/harbour-bisect/harbour/inst/linux/sunpro/c/bin/hbrun
> Terminated at: 2010.05.20 22:26:52
> Unrecoverable error 6005: Exception SIGSEGV at address 0x1b800ad5268
> Called from GET(73)
> Called from GETNEW(1978)
> Called from __GET(70)
> Called from HB_DOTPROMPT(162) in ../../../hbrun.prg
> Called from _APPMAIN(124) in ../../../hbrun.prg
> ------------------------------------------------------------------------
> (backtraces for both cases are below).
> this only happens if hbrun is requested to run interactively (eg. 
> using the dot console); if it is to run a program (at least a simple 
> one), it's ok. i also have not been able to find anything similar with 
> the other compilers i'm testing with.
> build environment is ubuntu 10.04/x64 and ubuntu 6.06/i386, with the 
> following settings:

Linux SUNPRO port has very serious bug. It does not correctly generate
code for all constructors. We are exploiting this problem from time to
time. It probably depends on total binary size which may interact with
the contents of some uninitialized memory. I do not know exectly where
inside SUNPRO the problem is but I've checked the final results in
harbour application. Startup code for some PRG modules is not executed
so they are not registered in HVM and their symbol tables are not
initialized but other modules contains references to functions from
unregistered modules and when they are executed application GPFs when
trying to access PHB_DYNS pointers in symbol tables.
In the past I reported few times that in my SunPRO builds hbtest GPFs
due to this problem. Now I've tested current builds and it works OK.
I can executed without any problems hbtest and hbrun. I'm using
suse1...@x86_64. Anyhow I expect that it can stop to work in any moment
when some modification change total memory alignment and the problem
will be exploited again. Looks that in your system is still exploited.

> Program received signal SIGSEGV, Segmentation fault.
> 0x0000000000429ae1 in hb_vmPushStatic (uiStatic=1) at ../../../hvm.c:6960
> 6960     pStatic = ( ( PHB_ITEM ) hb_stackGetStaticsBase() 
> )->item.asArray.value->pItems + uiStatic - 1;

The symbol table of executed module was not registered so static frame
was not initialized and now executed code tries to access the array
of static variables using NULL pointer and GPFs.
I know what's the reason of problem but I'm afraid that I cannot resolve
it well. It has to be fixed inside SunPRO compiler/linker code. It's
probably only in Linux port. I've never exploited it in SunOS.

best regards,
Przemek
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to