lp:~vlad-lesin/percona-server/5.5-bug-1351148

Created by Vlad Lesin on 2014-09-19 and last modified on 2014-12-02
Get this branch:
bzr branch lp:~vlad-lesin/percona-server/5.5-bug-1351148
Only Vlad Lesin can upload to this branch. If you are Vlad Lesin please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Recent revisions

692. By Vlad Lesin on 2014-12-02

Bug #1351128 fix.

The bug's summary:

1) The value in pins->stack_ends_here is actually incorrect. This value is
calculated when the thread is initialized in my_thread_init(). The problem is
that the value doesn't take into account existing stack usage and just adds the
thread stack size to calculate the beginning of the stack.

2) _lf_pinbox_real_free() is using alloca() in a very unsafe way. alloca()
should only be used by leaf functions, since you cannot predict the amount of
stack space that non-leaf functions will use. As pins->stack_ends_here is
calculated in wrong way and there is no window for the qsort() which is invoked
from _lf_pinbox_real_free() after alloca(), stack overflow can take place.

The solution:

1) Take into accout the current stack offset when stack size is calculated
in my_thread_init();

2) Don't allocate the whole free stack space in _lf_pinbox_real_free(),
take some window for qsort();

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:percona-server/5.6
This branch contains Public information 
Everyone can see this information.

Subscribers