bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.51k stars 1.58k forks source link

startUnsafe casue NullPointerException lead to jvm crash #1838

Open 347866243 opened 2 years ago

347866243 commented 2 years ago

private FFmpegFrameRecorder recorder;

private boolean consumerIsVaild = true;

public DataAutoRecordConsumer(DataCollect dataCollect, DataTask dataTask) throws FrameRecorder.Exception {
    super(dataCollect, dataTask);
    initRecord();
}

private void initRecord() throws FrameRecorder.Exception {
    try {
        if (null != recorder) {
            recorder.close();
        }
        //文件名规则 deviceCode_channel_startTime_时长
        recorder = new FFmpegFrameRecorder(VoiceDataUtil.generateAutoCollectFilePath(getRootPath(), getDataTask().getTaskKey(), getFileSaveDuration()), dataCollect.getAudioChannel());
        recorder.setFormat("wav");
        recorder.setAudioOption("crf", "0");
        recorder.setAudioOption("aq", "10");
        recorder.setSampleRate(dataCollect.getSampleRate());
        recorder.setAudioQuality(0);
        recorder.setAudioCodec(dataCollect.getAudioCodec());
        recorder.start();
    } catch (FFmpegFrameRecorder.Exception e) {
        log.error("add dataAutoRecordConsumer exception!", e);
    }
}
saudet commented 2 years ago

Please check the messages in the log before the crash.

347866243 commented 2 years ago

Stack: [0x00007ff925271000,0x00007ff925372000], sp=0x00007ff9253701d8, free space=1020k Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) J 14014 org.bytedeco.ffmpeg.global.avformat.av_write_trailer(Lorg/bytedeco/ffmpeg/avformat/AVFormatContext;)I (0 bytes) @ 0x00007ffa4145310f [0x00007ffa414530c0+0x4f] j org.bytedeco.javacv.FFmpegFrameRecorder.stop()V+15 J 18589 C1 ai.saturntech.vocalprint.vdata.handler.DataAutoRecordConsumer.initRecord()V (150 bytes) @ 0x00007ffa43c20494 [0x00007ffa43c20300+0x194] J 12408 C2 ai.saturntech.vocalprint.vdata.handler.AudioDataHandlerTask$$Lambda$916.accept(Ljava/lang/Object;)V (12 bytes) @ 0x00007ffa42bad074 [0x00007ffa42bacd80+0x2f4] J 12117 C2 java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V (11 bytes) @ 0x00007ffa41381be8 [0x00007ffa41381ba0+0x48] J 12115 C2 java.util.concurrent.ConcurrentHashMap$EntrySpliterator.forEachRemaining(Ljava/util/function/Consumer;)V (50 bytes) @ 0x00007ffa42d0c4b4 [0x00007ffa42d0c320+0x194] J 8656 C2 java.util.concurrent.ForkJoinTask.doExec()I (37 bytes) @ 0x00007ffa422b825c [0x00007ffa422b8100+0x15c] J 8515 C1 java.util.concurrent.ForkJoinTask.doInvoke()I (50 bytes) @ 0x00007ffa412a3144 [0x00007ffa412a3040+0x104] J 18950 C1 java.util.stream.ForEachOps$ForEachOp.evaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void; (44 bytes) @ 0x00007ffa423d758c [0x00007ffa423d7140+0x44c] J 8651 C2 java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V (11 bytes) @ 0x00007ffa41de0318 [0x00007ffa41de0100+0x218] J 12168% C2 ai.saturntech.vocalprint.vdata.handler.AudioDataHandlerTask.lambda$new$3()V (231 bytes) @ 0x00007ffa42d6de60 [0x00007ffa42d6d880+0x5e0] j ai.saturntech.vocalprint.vdata.handler.AudioDataHandlerTask$$Lambda$907.run()V+4 j java.util.concurrent.Executors$RunnableAdapter.call()Ljava/lang/Object;+4 j java.util.concurrent.FutureTask.run()V+42 j java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95 j java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5 j java.lang.Thread.run()V+11 v ~StubRoutines::call_stub

saudet commented 2 years ago

If you're not seeing anything else on the console, please make sure that FFmpegLogCallback.set() has been called.