[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::decladebug

Title:Digital Ladebug debugger
Moderator:TLE::LUCIA
Created:Fri Feb 28 1992
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:969
Total number of notes:3959

908.0. "ladebug seg fault trying to debug an iostream test" by DECC::J_WARD () Thu Apr 03 1997 11:25

The code being tested was built with the V6.0 C++ compiler,
i.e. the one still in development.

cosf.zko.dec.com> decladebug a.out <test_cpp_2302.dat
Welcome to the Ladebug Debugger Version 4.0-33
------------------
object file name: a.out
Reading symbolic information ...
Ladebug Debugger Version 4.0-33 caught signal "Segmentation fault" (11).
This is an unexpected condition and may indicate the presence of a defect.
If you wish to report this, please include the stack trace that follows.
Diagnostic stack trace ...
0x12453128
0x12463f64
0x124629ec
0x1246160c
0x12437dc8
0x1243f954
0x12419780
0x12387f84
0x12228404
0x12216b14
0x12213c0c
end of diagnostic stack trace.
Fatal error: Segmentation fault
T.RTitleUserPersonal
Name
DateLines
908.1TLE::LUCIAhttp://asaab.zko.dec.com/~lucia/biography.htmlThu Apr 03 1997 17:373
Can you point us at the binary so we can reproduce the problem?

Tim
908.2TLE::LUCIAhttp://asaab.zko.dec.com/~lucia/biography.htmlFri Apr 04 1997 12:0041
I have reproduced this.  Has something to do with nesting of scopes.  I don't
know exactly what yet, but it smells like an invalid symbol table.

Local Symbols:
from file ./cxxl_init.cxx   Printf aux if present
  0. ( 0)(   0) ./cxxl_init.cxx File       Text       symref 28
  1. ( 1)(0x140002a50) __cxxl_init_object Static     Bss        [13] struct(file
1, index 2)
  2. ( 1)(0x140002a58) iostream_init Static     Bss        [13] struct(file 1,
index 2)
  3. ( 1)(0x120018dd0) __cxxl_init(void) Proc       Text       [15] endref 7, int
  4. ( 2)(   0)            Block      Text       symref 6
  5. ( 2)( 0x4)            End        Text       symref 4
  6. ( 1)( 0x8) __cxxl_init(void) End        Text       symref 3
  7. ( 1)(0x120018bc0) __init_sti____cxxl_init_cxx___init_init(void) Proc      
Text       [17] endref 11, void
  8. ( 2)(0x14)            Block      Text       symref 10
  9. ( 2)(0xec)            End        Text       symref 8
 10. ( 1)(0xfc) __init_sti____cxxl_init_cxx___init_init(void) End        Text   
   symref 7
 11. ( 1)(0x120018cd0)            StaticProc Text       [19] endref 15, void
 12. ( 2)(0x1c)            Block      Text       symref 14
 13. ( 2)(0x2c)            End        Text       symref 12
 14. ( 1)(0x34)            End        Text       symref 11
 15. ( 1)(0x120018d10)            StaticProc Text       [21] endref 19, void
 16. ( 2)(0x1c)            Block      Text       symref 18
 17. ( 2)(0x2c)            End        Text       symref 16
 18. ( 1)(0x34)            End        Text       symref 15
 19. ( 1)(0x120018d50)            StaticProc Text       [23] endref 23, void
 20. ( 2)(0x1c)            Block      Text       symref 22
 21. ( 2)(0x30)            End        Text       symref 20
 22. ( 1)(0x38)            End        Text       symref 19
 23. ( 1)(0x120018d90)            StaticProc Text       [25] endref 27, void
 24. ( 2)(0x1c)            Block      Text       symref 26
 25. ( 2)(0x2c)            End        Text       symref 24
 26. ( 1)(0x34)            End        Text       symref 23
 27. ( 0)(   0) ./cxxl_init.cxx End        Text       symref 0


The 26th entry (th END for the StaticProc at 23) is not closing the list of
scopes correctly.  This is just an update.  Someone will look into this further.
908.3Blame meCXXC::MJHANSMatthew Hanselman, DEC C/C++Mon Apr 07 1997 17:594
    I've verified it's probably something I'm doing wrong -- I'll take it
    from here.
    
    							- Matt
908.4CXXC::MJHANSMatthew Hanselman, DEC C/C++Mon Apr 07 1997 18:569
    This problem existed because V6.0 was generating namespace TDIs.  Since
    neither ladebug nor stdump knows about namespace TDIs, it looked very
    much like a totally wrong DST was being generated.
    
    I've disabled namespace TDI generation for the time being; I'll
    re-enable it when we install a ladebug that can handle namespace TDIs. 
    I didn't realize we already had code that used namespaces.
    
    								- Matt
908.5TLE::LUCIAhttp://asaab.zko.dec.com/~lucia/biography.htmlTue Apr 08 1997 18:403
The problem is with "unnamed static procs".  Ladebug intentionally ignores any
unnamed symbol, since it is useless to the user.  It doesn't know about the
corresponding ENDs and so it pops too many scopes.
908.6CXXC::MJHANSMatthew Hanselman, DEC C/C++Fri Apr 18 1997 11:0611
    We're working on naming all of our compiler-generated routines.  This
    problem should fall out when this happens.
    
    However, it is perfectly legal to have unnamed static procedures in
    your object file -- however, the user would never be able to make one
    themselves, and should't care about what's going on inside them.  To make
    ladebug more "bulletproof", I'd suggest rigging ladebug so it won't die
    on these cases -- probably making it know to completely ignore unnamed
    routines.
    
    							- Matt