Re: [Maria-developers] [Commits] 6414959: MDEV-7526: TokuDB doesn't build on OS X
Hi, Vicentiu! On Dec 19, Vicentiu Ciorbaru wrote:
revision-id: 64149590c47d1cf6b1b227d8c90bdc23d20a8956 (mariadb-5.5.47-8-g6414959) parent(s): f89c9fc4b7b5d82c79775cb848225900b45a6b79 author: Vicențiu Ciorbaru committer: Vicențiu Ciorbaru timestamp: 2015-12-19 14:14:10 +0200 message:
MDEV-7526: TokuDB doesn't build on OS X
This patch fixes another compilation error caused by specifying attribute nonnull for all the parameters of the copyout function. This is incorrect as the function actually gets called with null parameters indirectly and thus only the output parameter should be nonnull.
diff --git a/storage/tokudb/ft-index/util/dmt.h b/storage/tokudb/ft-index/util/dmt.h index d4b032f..43e44df 100644 --- a/storage/tokudb/ft-index/util/dmt.h +++ b/storage/tokudb/ft-index/util/dmt.h @@ -679,16 +679,16 @@ class dmt { __attribute__((nonnull)) void rebalance(subtree *const subtree);
- __attribute__((nonnull)) + __attribute__((nonnull(3))) static void copyout(uint32_t *const outlen, dmtdata_t *const out, const dmt_node *const n);
Where is copyout called with the null parameter? In 10.0 they've fixed it differently, it seems E.g. if (value != nullptr) { copyout(value, &this->d.a.values[best_zero]); } May be we'd better use the upstream fix? Regards, Sergei Chief Architect MariaDB and security@mariadb.org -- Vote for my Percona Live 2016 talks: https://www.percona.com/live/data-performance-conference-2016/sessions/maria... https://www.percona.com/live/data-performance-conference-2016/sessions/maria...
On Sun, 20 Dec 2015 at 11:44 Sergei Golubchik <serg@mariadb.org> wrote:
Hi, Vicentiu!
On Dec 19, Vicentiu Ciorbaru wrote:
revision-id: 64149590c47d1cf6b1b227d8c90bdc23d20a8956 (mariadb-5.5.47-8-g6414959) parent(s): f89c9fc4b7b5d82c79775cb848225900b45a6b79 author: Vicențiu Ciorbaru committer: Vicențiu Ciorbaru timestamp: 2015-12-19 14:14:10 +0200 message:
MDEV-7526: TokuDB doesn't build on OS X
This patch fixes another compilation error caused by specifying attribute nonnull for all the parameters of the copyout function. This is incorrect as the function actually gets called with null parameters indirectly and thus only the output parameter should be nonnull.
diff --git a/storage/tokudb/ft-index/util/dmt.h b/storage/tokudb/ft-index/util/dmt.h index d4b032f..43e44df 100644 --- a/storage/tokudb/ft-index/util/dmt.h +++ b/storage/tokudb/ft-index/util/dmt.h @@ -679,16 +679,16 @@ class dmt { __attribute__((nonnull)) void rebalance(subtree *const subtree);
- __attribute__((nonnull)) + __attribute__((nonnull(3))) static void copyout(uint32_t *const outlen, dmtdata_t *const out, const dmt_node *const n);
Where is copyout called with the null parameter? In 10.0 they've fixed it differently, it seems E.g.
The call stack that leads to null parameters for copyout: in ft-index/util/dmt.cc line 196: int dmt<dmtdata_t, dmtdataout_t, dmtwriter_t>::insert(const dmtwriter_t &value, const dmtcmp_t &v, uint32_t *const idx) { r = this->find_zero<dmtcmp_t, h>(v, nullptr, nullptr, &insert_idx); line 527: int dmt<dmtdata_t, dmtdataout_t, dmtwriter_t>::find_zero(const dmtcmp_t &extra, uint32_t *const value_len, dmtdataout_t *const value, uint32_t *const idxp) const { r = this->find_internal_zero_array<dmtcmp_t, h>(extra, value_len, value, child_idxp); line 966: int dmt<dmtdata_t, dmtdataout_t, dmtwriter_t>::find_internal_zero_array(const dmtcmp_t &extra, uint32_t *const value_len, dmtdataout_t *const value, uint32_t *const idxp) const This eventually calls copyout with nullptr arguments. if (value != nullptr) {
copyout(value, &this->d.a.values[best_zero]); }
May be we'd better use the upstream fix?
I could not find the code snippet that you are referring to. I am looking at the file: https://github.com/Tokutek/ft-index/blob/master/util/dmt.cc Here there seems to be no available fix. Did I look in the wrong place? The copyout function that I'm referring to has 3 or 4 parameters, not 2, as in your code snippet. Regards,
Sergei Chief Architect MariaDB and security@mariadb.org -- Vote for my Percona Live 2016 talks:
https://www.percona.com/live/data-performance-conference-2016/sessions/maria...
https://www.percona.com/live/data-performance-conference-2016/sessions/maria...
Hi, Vicențiu! On Dec 20, Vicențiu Ciorbaru wrote:
On Dec 19, Vicentiu Ciorbaru wrote:
revision-id: 64149590c47d1cf6b1b227d8c90bdc23d20a8956 (mariadb-5.5.47-8-g6414959) parent(s): f89c9fc4b7b5d82c79775cb848225900b45a6b79 author: Vicențiu Ciorbaru committer: Vicențiu Ciorbaru timestamp: 2015-12-19 14:14:10 +0200 message:
MDEV-7526: TokuDB doesn't build on OS X
This patch fixes another compilation error caused by specifying attribute nonnull for all the parameters of the copyout function. This is incorrect as the function actually gets called with null parameters indirectly and thus only the output parameter should be nonnull.
ok to push
I could not find the code snippet that you are referring to. I am looking at the file:
https://github.com/Tokutek/ft-index/blob/master/util/dmt.cc
Here there seems to be no available fix. Did I look in the wrong place? The copyout function that I'm referring to has 3 or 4 parameters, not 2, as in your code snippet.
Yes, I don't think this github repository is still updated. TokuDB is now part of Percona-Server tree, that's where I'm merging it from. The snipper I was referring to is in our 10.0 tree now. But now all copyout calls have this protection, so please push your fix. Regards, Sergei Chief Architect MariaDB and security@mariadb.org -- Vote for my Percona Live 2016 talks: https://www.percona.com/live/data-performance-conference-2016/sessions/maria... https://www.percona.com/live/data-performance-conference-2016/sessions/maria...
Sergei, Vicențiu -
I could not find the code snippet that you are referring to. I am looking at the file:
https://github.com/Tokutek/ft-index/blob/master/util/dmt.cc
Here there seems to be no available fix. Did I look in the wrong place? The copyout function that I'm referring to has 3 or 4 parameters, not 2, as in your code snippet.
Yes, I don't think this github repository is still updated. TokuDB is now part of Percona-Server tree, that's where I'm merging it from. The snipper I was referring to is in our 10.0 tree now.
Percona-Server tree only hosts the MySQL SE layer of TokuDB. The index itself, the former ft-index repo, now lives at https://github.com/percona/PerconaFT, a separate repo as it's used by both MySQL and MongoDB forks. Please check there for up-to-date upstream sources. -- Laurynas
participants (3)
-
Laurynas Biveinis
-
Sergei Golubchik
-
Vicențiu Ciorbaru