A new high-performance file system we are working with returns an error while writing a .parquet file. The following arrow symbol does not resolve properly and the error is masked.
libparquet.so: undefined symbol: _ZNK5arrow6Status8ToStringB5cxx11Ev > nm libarrow.so* | grep -i ZNK5arrow6Status8ToStringB5cxx11Ev 00000000002b7760 t _ZNK5arrow6Status8ToStringB5cxx11Ev 00000000002b7760 t _ZNK5arrow6Status8ToStringB5cxx11Ev One of our Linux dev/build experts tracked this down to an issue in arrow open source. He says the lowercase ‘t’ (text) code (… 7760 t _ZNK …) in the nm command output is incorrect and it should instead be an uppercase ‘T’. He traced the problem to this file: ../cpp/src/arrow/symbols.map Here’s an update with his fix. Lines 27-30 are new. Nothing else changes. 1 # Licensed to the Apache Software Foundation (ASF) under one 2 # or more contributor license agreements. See the NOTICE file 3 # distributed with this work for additional information 4 # regarding copyright ownership. The ASF licenses this file 5 # to you under the Apache License, Version 2.0 (the 6 # "License"); you may not use this file except in compliance 7 # with the License. You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, 12 # software distributed under the License is distributed on an 13 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 14 # KIND, either express or implied. See the License for the 15 # specific language governing permissions and limitations 16 # under the License. 17 18 { 19 global: 20 extern "C++" { 21 # The leading asterisk is required for symbols such as 22 # "typeinfo for arrow::SomeClass". 23 # Unfortunately this will also catch template specializations 24 # (from e.g. STL or Flatbuffers) involving Arrow types. 25 *arrow::*; 26 *arrow_vendored::*; 27 *ToString*; 28 *key*; 29 *str*; 30 *value*; 31 }; 32 # Also export C-level helpers 33 arrow_*; 34 pyarrow_*; 35 36 # Symbols marked as 'local' are not exported by the DSO and thus may not 37 # be used by client applications. Everything except the above falls here. 38 # This ensures we hide symbols of static dependencies. 39 local: 40 *; 41 42 }; We have made these changes in our local clones the arrow open source repositories. I’m passing this along for the community’s review. Reply with a link and I’ll enter a jira ticket if needed. -Brian