You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Antoine Pitrou (Jira)" <ji...@apache.org> on 2022/01/03 16:06:00 UTC
[jira] [Commented] (ARROW-15228) StringBuilder UnsafeAppend causes EXC_BAD_ACCESS
[ https://issues.apache.org/jira/browse/ARROW-15228?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17468078#comment-17468078 ]
Antoine Pitrou commented on ARROW-15228:
----------------------------------------
If you want to use unsafe appends, then yes, you need to know an upper bound (and preferably a reasonable one if you don't want to overallocate too much). Otherwise, you should use normal appends (but even then, {{Reserve}} and {{ReserveData}} are useful to limit the number of resizes).
> StringBuilder UnsafeAppend causes EXC_BAD_ACCESS
> ------------------------------------------------
>
> Key: ARROW-15228
> URL: https://issues.apache.org/jira/browse/ARROW-15228
> Project: Apache Arrow
> Issue Type: Bug
> Reporter: Will Ayd
> Priority: Minor
>
> It seems that StringBuilder->UnsafeAppend produces a memory violation. This is on macOS Monterey with an intel chip if it matters. Below is a sample program that will reproduce the error:
> {code:java}
> #include <arrow/api.h>
> arrow::Status RunMain(int argc, char** argv) {
> auto builder = std::make_shared<arrow::StringBuilder>();
> ARROW_RETURN_NOT_OK(builder->Reserve(1));
> builder->UnsafeAppend(std::string("a"));
> return arrow::Status::OK();
> }
> int main(int argc, char** argv) {
> arrow::Status st = RunMain(argc, argv);
> if (!st.ok()) {
> return 1;
> }
> return 0;
> }{code}
>
> I could not reproduce with another builder type
--
This message was sent by Atlassian Jira
(v8.20.1#820001)