Hi,
I am trying to debug a crash I am seeing with 7.1.6. This crash happens
with no traffic and my custom plugin enabled. My plugin periodically
performs async fetches (using atscppapi) to retrieve data from a remote
server. The crash is happening in the continuation handler. When I try to
print the continuation, the continuation seems to go on forever (see output
below). The local_ip in the continuation (netvconnection) has a static
INVALID member that seems to recursively reference itself. Is this just a
gdb issue or a real problem? Thanks for the help...

Dk.

https://github.com/apache/trafficserver/issues/5596
(gdb) bt
#0  0x00002b2b4a6a1428 in __GI_raise (sig=sig@entry=6) at
../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00002b2b4a6a302a in __GI_abort () at abort.c:89
#2  0x00002b2b4862ae1a in ink_abort (message_format=0x2b2b48659580 "%s:%d:
failed assertion `%s`")
    at ink_error.cc:99
#3  0x00002b2b48623fdf in _ink_assert (expression=0xb3c6e0 "call_event ==
core_lock_retry_event",
    file=0xb3c320 "PluginVC.cc", line=219) at ink_assert.cc:37
#4  0x00000000005dceff in PluginVC::main_handler (this=0x61a00002eec0,
event=1,
    data=0x62c0000064c0) at PluginVC.cc:219
#5  0x000000000054c331 in Continuation::handleEvent (this=0x61a00002eec0,
event=1,
    data=0x62c0000064c0)
    at
/root/ts-source/trafficserver-7.1.6/iocore/eventsystem/I_Continuation.h:152
#6  0x0000000000afb538 in EThread::process_event (this=0x2b2b513a0800,
e=0x62c0000064c0,
    calling_code=1) at UnixEThread.cc:140
#7  0x0000000000afba6f in EThread::process_queue (this=0x2b2b513a0800,
    NegativeQueue=0x2b2b51ab1db0) at UnixEThread.cc:175
#8  0x0000000000afbcf5 in EThread::execute_regular (this=0x2b2b513a0800) at
UnixEThread.cc:207
#9  0x0000000000afc397 in EThread::execute (this=0x2b2b513a0800) at
UnixEThread.cc:278
#10 0x0000000000af9ca7 in spawn_thread_internal (a=0x604000017d50) at
Thread.cc:84
#11 0x00002b2b499b16ba in start_thread (arg=0x2b2b51ab2700) at
pthread_create.c:333
#12 0x00002b2b4a77341d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb) frame 4
(gdb) p *(PluginVC *) 0x61a00002eec0
$9 = (PluginVC) {
  <NetVConnection> = {
    <VConnection> = {
      <Continuation> = {
        <force_VFPT_to_top> = {
          _vptr.force_VFPT_to_top = 0xb3e2d8 <vtable for PluginVC+16>
        },
        members of Continuation:
        handler = (int (Continuation::*)(Continuation * const, int,
    void *)) 0x5dc3fa <PluginVC::main_handler(int, void*)>,
        handler_name = 0xb3c3a0 "&PluginVC::main_handler",
        mutex = {
          m_ptr = 0x62a0002cb690
        },
        link = {
          <SLink<Continuation>> = {
            next = 0x0
          },
          members of Link<Continuation>:
          prev = 0x0
        },
        control_flags = {
          raw_flags = 0
        }
      },
      members of VConnection:
      lerrno = 0
    },
    members of NetVConnection:
    options = {
      ip_proto = NetVCOptions::USE_TCP,
      ip_family = 2,
      local_ip = {
        _family = 0,
        _addr = {
          _ip4 = 3200171710,
          _ip6 = {
---Type <return> to continue, or q <return> to quit---
            __in6_u = {
              __u6_addr8 = '\276' <repeats 16 times>,
              __u6_addr16 = {48830, 48830, 48830, 48830, 48830, 48830,
48830, 48830},
              __u6_addr32 = {3200171710, 3200171710, 3200171710, 3200171710}
            }
          },
          _byte = '\276' <repeats 16 times>,
          _u32 = {3200171710, 3200171710, 3200171710, 3200171710},
          _u64 = {13744632839234567870, 13744632839234567870}
        },
        static INVALID = {
          _family = 0,
          _addr = {
            _ip4 = 0,
            _ip6 = {
              __in6_u = {
                __u6_addr8 = '\000' <repeats 15 times>,
                __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                __u6_addr32 = {0, 0, 0, 0}
              }
            },
            _byte = '\000' <repeats 15 times>,
            _u32 = {0, 0, 0, 0},
            _u64 = {0, 0}
          },
          static INVALID = {
            _family = 0,
            _addr = {
              _ip4 = 0,
              _ip6 = {
                __in6_u = {
                  __u6_addr8 = '\000' <repeats 15 times>,
                  __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                  __u6_addr32 = {0, 0, 0, 0}
                }
              },
              _byte = '\000' <repeats 15 times>,
---Type <return> to continue, or q <return> to quit---
              _u32 = {0, 0, 0, 0},
              _u64 = {0, 0}
            },
            static INVALID = {
              _family = 0,
              _addr = {
                _ip4 = 0,
                _ip6 = {
                  __in6_u = {
                    __u6_addr8 = '\000' <repeats 15 times>,
                    __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                    __u6_addr32 = {0, 0, 0, 0}
                  }
                },
                _byte = '\000' <repeats 15 times>,
                _u32 = {0, 0, 0, 0},
                _u64 = {0, 0}
              },
              static INVALID = {
                _family = 0,
                _addr = {
                  _ip4 = 0,
                  _ip6 = {
                    __in6_u = {
                      __u6_addr8 = '\000' <repeats 15 times>,
                      __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                      __u6_addr32 = {0, 0, 0, 0}
                    }
                  },
                  _byte = '\000' <repeats 15 times>,
                  _u32 = {0, 0, 0, 0},
                  _u64 = {0, 0}
                },
                static INVALID = {
                  _family = 0,
                  _addr = {
                    _ip4 = 0,
---Type <return> to continue, or q <return> to quit---
                    _ip6 = {
                      __in6_u = {
                        __u6_addr8 = '\000' <repeats 15 times>,
                        __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                        __u6_addr32 = {0, 0, 0, 0}
                      }
                    },
                    _byte = '\000' <repeats 15 times>,
                    _u32 = {0, 0, 0, 0},
                    _u64 = {0, 0}
                  },
                  static INVALID = {
                    _family = 0,
                    _addr = {
                      _ip4 = 0,
                      _ip6 = {
                        __in6_u = {
                          __u6_addr8 = '\000' <repeats 15 times>,
                          __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                          __u6_addr32 = {0, 0, 0, 0}
                        }
                      },
                      _byte = '\000' <repeats 15 times>,
                      _u32 = {0, 0, 0, 0},
                      _u64 = {0, 0}
                    },
                    static INVALID = {
                      _family = 0,
                      _addr = {
                        _ip4 = 0,
                        _ip6 = {
                          __in6_u = {
                            __u6_addr8 = '\000' <repeats 15 times>,
                            __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                            __u6_addr32 = {0, 0, 0, 0}
                          }
                        },
---Type <return> to continue, or q <return> to quit---
                        _byte = '\000' <repeats 15 times>,
                        _u32 = {0, 0, 0, 0},
                        _u64 = {0, 0}
                      },
                      static INVALID = {
                        _family = 0,
                        _addr = {
                          _ip4 = 0,
                          _ip6 = {
                            __in6_u = {
                              __u6_addr8 = '\000' <repeats 15 times>,
                              __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                              __u6_addr32 = {0, 0, 0, 0}
                            }
                          },
                          _byte = '\000' <repeats 15 times>,
                          _u32 = {0, 0, 0, 0},
                          _u64 = {0, 0}
                        },
                        static INVALID = {
                          _family = 0,
                          _addr = {
                            _ip4 = 0,
                            _ip6 = {
                              __in6_u = {
                                __u6_addr8 = '\000' <repeats 15 times>,
                                __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                                __u6_addr32 = {0, 0, 0, 0}
                              }
                            },
                            _byte = '\000' <repeats 15 times>,
                            _u32 = {0, 0, 0, 0},
                            _u64 = {0, 0}
                          },
                          static INVALID = {
                            _family = 0,
                            _addr = {
---Type <return> to continue, or q <return> to quit---
                              _ip4 = 0,
                              _ip6 = {
                                __in6_u = {
                                  __u6_addr8 = '\000' <repeats 15 times>,
                                  __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                                  __u6_addr32 = {0, 0, 0, 0}
                                }
                              },
                              _byte = '\000' <repeats 15 times>,
                              _u32 = {0, 0, 0, 0},
                              _u64 = {0, 0}
                            },
                            static INVALID = {
                              _family = 0,
                              _addr = {
                                _ip4 = 0,
                                _ip6 = {
                                  __in6_u = {
                                    __u6_addr8 = '\000' <repeats 15 times>,
                                    __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0},
                                    __u6_addr32 = {0, 0, 0, 0}
                                  }
                                },
                                _byte = '\000' <repeats 15 times>,
                                _u32 = {0, 0, 0, 0},
                                _u64 = {0, 0}
                              },
                              static INVALID = {
                                _family = 0,
                                _addr = {
                                  _ip4 = 0,
                                  _ip6 = {
                                    __in6_u = {
                                      __u6_addr8 = '\000' <repeats 15
times>,
                                      __u6_addr16 = {0, 0, 0, 0, 0, 0, 0,
0},
                                      __u6_addr32 = {0, 0, 0, 0}
                                    }
---Type <return> to continue, or q <return> to quit---
                                  },
                                  _byte = '\000' <repeats 15 times>,
                                  _u32 = {0, 0, 0, 0},
                                  _u64 = {0, 0}
                                },
                                static INVALID = {
                                  _family = 0,
                                  _addr = {
                                    _ip4 = 0,
                                    _ip6 = {
                                      __in6_u = {
                                        __u6_addr8 = '\000' <repeats 15
times>,
                                        __u6_addr16 = {0, 0, 0, 0, 0, 0, 0,
0},
                                        __u6_addr32 = {0, 0, 0, 0}
                                      }
                                    },
                                    _byte = '\000' <repeats 15 times>,
                                    _u32 = {0, 0, 0, 0},
                                    _u64 = {0, 0}
                                  },
                                  static INVALID = {
                                    _family = 0,
                                    _addr = {
                                      _ip4 = 0,
                                      _ip6 = {
                                        __in6_u = {
                                          __u6_addr8 = '\000' <repeats 15
times>,
                                          __u6_addr16 = {0, 0, 0, 0, 0, 0,
0, 0},
                                          __u6_addr32 = {0, 0, 0, 0}
                                        }
                                      },
                                      _byte = '\000' <repeats 15 times>,
                                      _u32 = {0, 0, 0, 0},
                                      _u64 = {0, 0}
                                    },
                                    static INVALID = {
                                      _family = 0,
---Type <return> to continue, or q <return> to quit---
                                      _addr = {
                                        _ip4 = 0,
                                        _ip6 = {
                                          __in6_u = {
                                            __u6_addr8 = '\000' <repeats 15
times>,
                                            __u6_addr16 = {0, 0, 0, 0, 0,
0, 0, 0},
                                            __u6_addr32 = {0, 0, 0, 0}
                                          }
                                        },
                                        _byte = '\000' <repeats 15 times>,
                                        _u32 = {0, 0, 0, 0},
                                        _u64 = {0, 0}
                                      },
                                      static INVALID = {
                                        _family = 0,
                                        _addr = {
                                          _ip4 = 0,
                                          _ip6 = {
                                            __in6_u = {
                                              __u6_addr8 = '\000' <repeats
15 times>,
                                              __u6_addr16 = {0, 0, 0, 0, 0,
0, 0, 0},
                                              __u6_addr32 = {0, 0, 0, 0}
                                            }
                                          },
                                          _byte = '\000' <repeats 15 times>,
                                          _u32 = {0, 0, 0, 0},
                                          _u64 = {0, 0}
                                        },
                                        static INVALID = {
                                          _family = 0,
                                          _addr = {
                                            _ip4 = 0,
                                            _ip6 = {
                                              __in6_u = {
                                                __u6_addr8 = '\000'
<repeats 15 times>,
                                                __u6_addr16 = {0, 0, 0, 0,
0, 0, 0, 0},
                                                __u6_addr32 = {0, 0, 0, 0}
---Type <return> to continue, or q <return> to quit---
                                              }
                                            },
                                            _byte = '\000' <repeats 15
times>,
                                            _u32 = {0, 0, 0, 0},
                                            _u64 = {0, 0}
                                          },
                                          static INVALID = {
                                            _family = 0,
                                            _addr = {
                                              _ip4 = 0,
                                              _ip6 = {
                                                __in6_u = {
                                                  __u6_addr8 = '\000'
<repeats 15 times>,
                                                  __u6_addr16 = {0, 0, 0,
0, 0, 0, 0, 0},
                                                  __u6_addr32 = {0, 0, 0, 0}
                                                }
                                              },
                                              _byte = '\000' <repeats 15
times>,
                                              _u32 = {0, 0, 0, 0},
                                              _u64 = {0, 0}
                                            },
                                            static INVALID = {
                                              _family = 0,
                                              _addr = {
                                                _ip4 = 0,
                                                _ip6 = {
                                                  __in6_u = {
                                                    __u6_addr8 = '\000'
<repeats 15 times>,
                                                    __u6_addr16 = {0, 0, 0,
0, 0, 0, 0, 0},
                                                    __u6_addr32 = {0, 0, 0,
0}
                                                  }
                                                },
                                                _byte = '\000' <repeats 15
times>,
                                                _u32 = {0, 0, 0, 0},
                                                _u64 = {0, 0}
                                              },
                                              static INVALID = {
---Type <return> to continue, or q <return> to quit---
                                                _family = 0,
                                                _addr = {
                                                  _ip4 = 0,
                                                  _ip6 = {
                                                    __in6_u = {
                                                      __u6_addr8 = '\000'
<repeats 15 times>,
                                                      __u6_addr16 = {0, 0,
0, 0, 0, 0, 0, 0},
                                                      __u6_addr32 = {0, 0,
0, 0}
                                                    }
                                                  },
                                                  _byte = '\000' <repeats
15 times>,
                                                  _u32 = {0, 0, 0, 0},
                                                  _u64 = {0, 0}
                                                },
                                                static INVALID = {
                                                  _family = 0,
                                                  _addr = {
                                                    _ip4 = 0,
                                                    _ip6 = {
                                                      __in6_u = {
                                                        __u6_addr8 = '\000'
<repeats 15 times>,
                                                        __u6_addr16 = {0,
0, 0, 0, 0, 0, 0, 0},
                                                        __u6_addr32 = {0,
0, 0, 0}
                                                      }
                                                    },
                                                    _byte = '\000' <repeats
15 times>,
                                                    _u32 = {0, 0, 0, 0},
                                                    _u64 = {0, 0}
                                                  },
                                                  static INVALID = {
                                                    _family = 0,
                                                    _addr = {
                                                      _ip4 = 0,
                                                      _ip6 = {
                                                        __in6_u = {
                                                          __u6_addr8 =
'\000' <repeats 15 times>,
                                                          __u6_addr16 = {0,
0, 0, 0, 0, 0, 0, 0},
---Type <return> to continue, or q <return> to quit---
                                                          __u6_addr32 = {0,
0, 0, 0}
                                                        }
                                                      },
                                                      _byte = '\000'
<repeats 15 times>,
                                                      _u32 = {0, 0, 0, 0},
                                                      _u64 = {0, 0}
                                                    },
                                                    static INVALID = {
                                                      _family = 0,
                                                      _addr = {
                                                        _ip4 = 0,
                                                        _ip6 = {
                                                          __in6_u = {
                                                            __u6_addr8 =
'\000' <repeats 15 times>,
                                                            __u6_addr16 =
{0, 0, 0, 0, 0, 0, 0,
                                                              0},
                                                            __u6_addr32 =
{0, 0, 0, 0}
                                                          }
                                                        },
                                                        _byte = '\000'
<repeats 15 times>,
                                                        _u32 = {0, 0, 0, 0},
                                                        _u64 = {0, 0}
                                                      },
                                                      static INVALID = {
                                                        _family = 0,
                                                        _addr = {
                                                          _ip4 = 0,
                                                          _ip6 = {
                                                            __in6_u = {
                                                              __u6_addr8 =
'\000' <repeats 15 times>,
                                                              __u6_addr16 =
{0, 0, 0, 0, 0, 0, 0,
                                                                0},
                                                              __u6_addr32 =
{0, 0, 0, 0}
                                                            }
                                                          },
---Type <return> to continue, or q <return> to quit---
                                                          _byte = '\000'
<repeats 15 times>,
                                                          _u32 = {0, 0, 0,
0},
                                                          _u64 = {0, 0}
                                                        },
                                                        static INVALID = {
                                                          _family = 0,
                                                          _addr = {
                                                            _ip4 = 0,
                                                            _ip6 = {
                                                              __in6_u = {
                                                                __u6_addr8
= '\000' <repeats 15 times>,
                                                                __u6_addr16
= {0, 0, 0, 0, 0, 0,
                                                                  0, 0},
                                                                __u6_addr32
= {0, 0, 0, 0}
                                                              }
                                                            },
                                                            _byte = '\000'
<repeats 15 times>,
                                                            _u32 = {0, 0,
0, 0},
                                                            _u64 = {0, 0}
                                                          },
                                                          static INVALID = {
                                                            _family = 0,
                                                            _addr = {
                                                              _ip4 = 0,
                                                              _ip6 = {
                                                                __in6_u = {

__u6_addr8 = '\000' <repeats 15 times>,

__u6_addr16 = {0, 0, 0, 0, 0, 0,
                                                                    0, 0},

__u6_addr32 = {0, 0, 0, 0}
                                                                }
                                                              },
                                                              _byte =
'\000' <repeats 15 times>,
                                                              _u32 = {0, 0,
0, 0},
                                                              _u64 = {0, 0}

Reply via email to