dyld: lazy symbol binding failed: Symbol not found: _clock_gettime #117
Closed
Description
We're getting the following error from the binary when trying to add a record to a stream (via KinesisProducer.addUserRecord
) using amazon-kinesis-producer
0.12.4 or 0.12.5:
15:53:06.730 [kpl-daemon-0003] WARN c.a.s.k.p.LogInputStreamReader - dyld: lazy symbol binding failed: Symbol not found: _clock_gettime
15:53:06.730 [kpl-daemon-0003] WARN c.a.s.k.p.LogInputStreamReader - Referenced from: /tmp/bfce9c0d-2028-4815-bc6e-7aeb63582f0b/amazon-kinesis-producer-native-binaries/kinesis_producer_db53b066fadea1904ec9eea479f386f5868a9fda (which was built for Mac OS X 10.12)
15:53:06.730 [kpl-daemon-0003] WARN c.a.s.k.p.LogInputStreamReader - Expected in: /usr/lib/libSystem.B.dylib
This only happens on some systems:
- It fails on MacOSX 10.11.5 and 10.11.6.
- It works on MacOSX 10.12 and Ubuntu 16.10 with kernel 4.8.0
The producer subsequently fails with the following log messages. Due to the binding failure, it probably fails to read from the input channel, which leads to the updateCredentials
task to be interrupted while the ExecutorService
is being terminated:
13:31:58.131 [kpl-daemon-0007] WARN com.amazonaws.services.kinesis.producer.Daemon - Exception during updateCredentials
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at com.amazonaws.services.kinesis.producer.Daemon$5.run(Daemon.java:321)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
13:31:58.131 [kpl-daemon-0005] ERROR com.amazonaws.services.kinesis.producer.KinesisProducer - Error in child process
java.lang.RuntimeException: EOF reached during read
at com.amazonaws.services.kinesis.producer.Daemon.fatalError(Daemon.java:521)
at com.amazonaws.services.kinesis.producer.Daemon.fatalError(Daemon.java:497)
at com.amazonaws.services.kinesis.producer.Daemon.fatalError(Daemon.java:493)
at com.amazonaws.services.kinesis.producer.Daemon.readSome(Daemon.java:542)
at com.amazonaws.services.kinesis.producer.Daemon.receiveMessage(Daemon.java:246)
at com.amazonaws.services.kinesis.producer.Daemon.access$500(Daemon.java:63)
at com.amazonaws.services.kinesis.producer.Daemon$3.run(Daemon.java:301)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Using version 0.12.3 we don't have this issue. Looking through the commits since 0.12.3, the issue was probably introduced with this commit (although I'm not a C++ expert): 766bac1
@pfifer any help would be greatly appreciated. Let me know if any more details are required. Thanks!