[MDEV-3861] TC_LOG_MMAP::log_one_transaction(my_xid): Assertion `p->ptr<p->end' failed Created: 2012-11-16 Updated: 2013-11-29 Resolved: 2012-11-20 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | 10.0.0 |
| Fix Version/s: | 10.0.1, 5.5.28a, 5.2.13, 5.1.66 |
| Type: | Bug | Priority: | Major |
| Reporter: | Kristian Nielsen | Assignee: | Kristian Nielsen |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Description |
|
I have a simple test case that replaces a row in innodb and tokudb and mysqld: /home/prohaska/maria10-build/mariadb-10.0.0/sql/log.cc:7547: The test works great when the binlog is enabled. The test crashes What is the best way to get this fixed? Would it help if i made the Thanks Here is the stack trace: Program received signal SIGABRT, Aborted. |
| Comments |
| Comment by Kristian Nielsen [ 2012-11-20 ] |
|
Fix pushed to 5.1, merged to 5.2 and 5.3. |
| Comment by Laurynas Biveinis [ 2013-11-28 ] |
|
I am looking at the 5.5 version of this fix (rev 2502.565.20 in lp:maria/5.5) and I am not sure I understand why last_pool was replaced with last_pool_ptr there? Any help would be greatly appreciated. Thanks, |
| Comment by Laurynas Biveinis [ 2013-11-28 ] |
|
Sorry, pool_last and pool_last_ptr. |
| Comment by Kristian Nielsen [ 2013-11-28 ] |
|
> I am not sure I understand why last_pool was replaced with last_pool_ptr It looks like this is to correctly handle the case of an empty list. TC_LOG_MMAP::sync() links in a page at the end of the linked list. If the list The last_pool_ptr is a standard technique for linked lists to handle this Note that this usage matches the variable `best_p' in function Does this make things clear for you? |
| Comment by Laurynas Biveinis [ 2013-11-29 ] |
|
Kristian - Thanks for your explanation, I haven't considered the case of an But I don't see how that list can be possibly empty? TC_LOG_MMAP |
| Comment by Kristian Nielsen [ 2013-11-29 ] |
|
> But I don't see how that list can be possibly empty? Well, there were multiple problems in the pool list handling. I suppose I just So maybe the list can not be empty, but it still seems better to not leave Another problem in the bug was a race condition that get_active_from_pool() IIRC, this bug was found because of a different bug elsewhere in the code. Out of curiosity, what makes you interested in this bug? Did you experience it |
| Comment by Laurynas Biveinis [ 2013-11-29 ] |
|
Kristian - Now I see, thank you. I understood all the other changes by this patch fixing the problems you describe, it's only the empty list handling which I had doubts about. I haven't experienced this in practice. My interest is caused by preparing Percona Server to work with TokuDB, which obviously requires production-quality TC_LOG_MMAP. Thus I am reviewing MariaDB changes, MySQL 5.7 fix for http://bugs.mysql.com/bug.php?id=47134, etc. Thanks again |