[ https://issues.apache.org/jira/browse/TS-5052?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thomas Jackson closed TS-5052. ------------------------------ Resolution: Cannot Reproduce Turns out this is only applicable to some backport builds I've made-- not upstream (yay!) > Segfault in HostDB sync if something fails while not holding the parent > continuation mutex > ------------------------------------------------------------------------------------------ > > Key: TS-5052 > URL: https://issues.apache.org/jira/browse/TS-5052 > Project: Traffic Server > Issue Type: Bug > Reporter: Thomas Jackson > Assignee: Thomas Jackson > > What we noticed was the following in traffic.out: > {code} > Server {0x2af761e0d700} WARNING: <P_RefCountCache.h:510 (initialize_storage)> > Unable to create temporary file /var/trafficserver/ > host.db.syncing, unable to persist hostdb: -13 error:Permission denied > traffic_server: Segmentation fault (Address not mapped to object > [0x28])traffic_server - STACK TRACE: > {code} > Which lead me to dig into it-- and it turns out the issue is related to > changes after the HostDB rewrite to move syncing outside of the main NET > threads. Before all calls to this syncer where done in a single net thread > wherever it was initially scheduled. Now we bounce between ET_TASK threads > and ET_NET threads (to avoid switching, lock contention, etc.)-- but the > error handlers weren't updated to handle this situation. > So to fix this, I've created a "set_error" and "return_error" method to the > RefCountCacheSerializer which will take this into consideration-- > specifically that it will immediately return the error if scheduled in the > calling thread-- otherwise it'll reschedule onto that thread *then* return > the error. -- This message was sent by Atlassian JIRA (v6.3.4#6332)