gdb 5

Tony Kimball alk@pobox.com
Tue Apr 17 11:25:00 GMT 2001


I'm wondering if these behaviours are indicative of a bug is .stabs,
or if there's something tricky going on:

When I 'main print symbols' in gdb 5.0, it goes into an infinite loop
and segvs.  Here's where the output starts to loop:

   typedef class {
       public JNIEnv env_id;
       public jint num_frames;
       public JVMPI_CallFrame frames;

       JVMPI_CallTrace _ZN15JVMPI_CallTraceaSERKS_;
       void _ZN15JVMPI_CallTraceC2ERKS_;
       void _ZN15JVMPI_CallTraceC1ERKS_;
       void _ZN15JVMPI_CallTraceC2Ev;
       void _ZN15JVMPI_CallTraceC1Ev;
   } JVMPI_CallTrace; 
   typedef class {
       public jint event_type;
       public JNIEnv env_id;
       public union {
         public:
           class {...} class_load;
           class {...} class_unload;
           class {...} obj_alloc;
           class {...} thread_start;

           union {...} operator=(union {
  public:
    class {...} class_load;
    class {...} class_unload;
    class {...} obj_alloc;
    class {...} thread_start;

    union {...} operator=(union {
  public:
    class {...} class_load;
    class {...} class_unload;
    class {...} obj_alloc;
    class {...} thread_start;

    union {...} operator=(union {
  public:
    class {...} class_load;
    class {...} class_unload;
    class {...} obj_alloc;
    class {...} thread_start;

    union {...} operator=(union {
  public:
    class {...} class_load;
    class {...} class_unload;
    class {...} obj_alloc;
    class {...} thread_start;

    union {...} operator=(union {
...

ad nauseam.

I also notice that there seems to be a loop in the type for klass in
main:

850	  main_thread = new gnu::gcj::runtime::FirstThread (klass, arg_vec);

(gdb) p *klass
p *klass

$2 = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

    static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

        static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

            static class$ = {<Object> = {<_JvObjectPrefix> = {

                  _vptr. = 0x8054890}, 

                static class$ = {<Object> = {<_JvObjectPrefix> = {

                      _vptr. = 0x8054890}, 

                    static class$ = {<Object> = {<_JvObjectPrefix> = {

                          _vptr. = 0x8054890}, 

                        static class$ = {<Object> = {<_JvObjectPrefix> = {

                              _vptr. = 0x8054890}, 

                            static class$ = {<Object> = {<_JvObjectPrefix> = {

                                  _vptr. = 0x8054890}, 

                                static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {

                                          _vptr. = 0x8054890}, 

                                        static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                            static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {

                                                      _vptr. = 0x8054890}, 

                                                    static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

---Type <return> to continue, or q <return> to quit---


                                                        static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                            static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {

                                                                      _vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {

                                                                          _vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                            static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                                static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                                    static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                                        static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                                            static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {

                                                                                                      _vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {

                                                                                                          _vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                                                            static c---Type <return> to continue, or q <return> to quit---


lass$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                                                                static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 

                                                                                                                    static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, 


et cetera.


More information about the Java mailing list