[ https://issues.apache.org/jira/browse/TS-185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Manjesh Nilange updated TS-185: ------------------------------- Attachment: url_host_set.patch This patch introduces a new member variable - m_capacity_host. This variable tracks the size of the memory chunk allocated for m_ptr_host. The actual length of the host field (which may differ from the capacity) will be continued to be tracked by m_len_host. This variable is required so that repeated free()ing/malloc()ing of the string does not happen. It is done only if the current size cannot accomodate the specified string. > url_host_set() is free-ing and allocating memory at every call which is > triggering a crash in the heap code > ----------------------------------------------------------------------------------------------------------- > > Key: TS-185 > URL: https://issues.apache.org/jira/browse/TS-185 > Project: Traffic Server > Issue Type: Bug > Components: Core > Reporter: Manjesh Nilange > Assignee: Manjesh Nilange > Priority: Minor > Fix For: 2.0.0a > > Attachments: url_host_set.patch > > > url_host_set() is calling this function every time: > const char * > mime_str_u16_set (HdrHeap *heap, > const char *s_str, > inku16 s_len, > const char **d_str, > inku16 *d_len, > bool must_copy) > { > // INKqa08287 - keep track of free string space. > // INVARIENT: passed in result pointers must be to > // either NULL or be valid ptr for a string already > // the string heaps > heap->free_string(*d_str, *d_len); > if (must_copy && s_str) { > s_str = heap->duplicate_str(s_str, s_len); > } > *d_str = s_str; > *d_len = s_len; > return(s_str); > } > So it always free()s and allocates a new chunk of memory. The regex mapping > code calls url_host_set() on the same URL object every time it finds a > mapping. At a high concurrency level, this was triggering a crash in the heap > code. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.