powersj opened a new issue, #43186:
URL: https://github.com/apache/arrow/issues/43186

   ### Describe the bug, including details regarding any error messages, 
version, and platform.
   
   On 32-bit test, when calling a write buffered with the pqarrow's FileWriter 
I see a panic due to unaligned operation. I believe this is due to the various 
`atomic.AddInt64` calls, in this case specifically [this 
one](https://github.com/apache/arrow/blob/5c64f74cf2840b37893d8158475676c290fa6615/go/parquet/pqarrow/path_builder.go#L509),
 but this appears to be used by both `pathBuilder` and `multipathLevelBuilder`.
   
   From the Go docs on this function:
   
   > AddInt64 atomically adds delta to *addr and returns the new value. 
Consider using the more ergonomic and less error-prone 
[Int64.Add](https://pkg.go.dev/sync/atomic#Int64.Add) instead (particularly if 
you target 32-bit platforms; see the bugs section).
   
   From the bugs section:
   
   > On ARM, 386, and 32-bit MIPS, it is the caller's responsibility to arrange 
for 64-bit alignment of 64-bit words accessed atomically via the primitive 
atomic functions (types [Int64](https://pkg.go.dev/sync/atomic#Int64) and 
[Uint64](https://pkg.go.dev/sync/atomic#Uint64) are automatically aligned). The 
first word in an allocated struct, array, or slice; in a global variable; or in 
a local variable (because the subject of all atomic operations will escape to 
the heap) can be relied upon to be 64-bit aligned.
   
   ## Steps to reproduce
   
   You can reproduce this by using `GOARCH=386`:
   
   ```sh
   git clone g...@github.com:powersj/telegraf -b feat/parquet-serializer
   cd telegraf
   GOARCH=386 go test -v ./plugins/outputs/parquet/...
   ```
   
   ## Trace
   
   ```s
   === FAIL: plugins/outputs/parquet TestCases (0.00s)
   panic: unaligned 64-bit atomic operation [recovered]
           panic: unaligned 64-bit atomic operation
   
   goroutine 7 [running]:
   testing.tRunner.func1.2({0x902af40, 0x93eb378})
           /usr/local/go/src/testing/testing.go:1631 +0x2a3
   testing.tRunner.func1()
           /usr/local/go/src/testing/testing.go:1634 +0x434
   panic({0x902af40, 0x93eb378})
           /usr/local/go/src/runtime/panic.go:770 +0x103
   runtime/internal/atomic.panicUnaligned()
           /usr/local/go/src/runtime/internal/atomic/unaligned.go:8 +0x2d
   runtime/internal/atomic.Xadd64(0xb43e9ac, 0xffffffffffffffff)
           /usr/local/go/src/runtime/internal/atomic/atomic_386.s:125 +0x11
   
github.com/apache/arrow/go/v16/parquet/pqarrow.(*multipathLevelBuilder).Release(0xb43e960)
           
/go/pkg/mod/github.com/apache/arrow/go/v16@v16.1.0/parquet/pqarrow/path_builder.go:509
 +0x3a
   
github.com/apache/arrow/go/v16/parquet/pqarrow.(*arrowColumnWriter).Write(0xb275c40,
 {0x93f7990, 0xb3c0d38})
           
/go/pkg/mod/github.com/apache/arrow/go/v16@v16.1.0/parquet/pqarrow/encode_arrow.go:198
 +0x1b9
   
github.com/apache/arrow/go/v16/parquet/pqarrow.(*FileWriter).WriteColumnChunked(0xb3e3200,
 0xb3b4f30, 0x0, 0x1)
           
/go/pkg/mod/github.com/apache/arrow/go/v16@v16.1.0/parquet/pqarrow/file_writer.go:330
 +0xf7
   
github.com/apache/arrow/go/v16/parquet/pqarrow.(*FileWriter).WriteColumnData(0xb3e3200,
 {0x9401564, 0xb3b49f0})
           
/go/pkg/mod/github.com/apache/arrow/go/v16@v16.1.0/parquet/pqarrow/file_writer.go:339
 +0x109
   
github.com/apache/arrow/go/v16/parquet/pqarrow.(*FileWriter).WriteBuffered(0xb3e3200,
 {0x9400770, 0xb3c7de0})
           
/go/pkg/mod/github.com/apache/arrow/go/v16@v16.1.0/parquet/pqarrow/file_writer.go:203
 +0x413
   
github.com/influxdata/telegraf/plugins/outputs/parquet.(*Parquet).Write(0xb275f70,
 {0xb442520, 0x1, 0x1})
           
/go/src/github.com/influxdata/telegraf/plugins/outputs/parquet/parquet.go:119 
+0x5d9
   
github.com/influxdata/telegraf/plugins/outputs/parquet.TestCases.func1(0xb362508)
           
/go/src/github.com/influxdata/telegraf/plugins/outputs/parquet/parquet_test.go:132
 +0x118
   testing.tRunner(0xb362508, 0xb3c7b00)
           /usr/local/go/src/testing/testing.go:1689 +0x125
   created by testing.(*T).Run in goroutine 6
           /usr/local/go/src/testing/testing.go:1742 +0x3b9
   
   DONE 7368 tests, 277 skipped, 2 failures in 133.817s
   ```
   
   ### Component(s)
   
   Go


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to