[
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.