Падение Origin сервера с SIGSEGV

Yury

New Member
Доброго!
Наблюдаем периодически падение Flashphonera с ошибкой - см вложение error.log. Как отловить эту ошибку и собрать диагностику которая поможет найти причину? Пока предполагаем что связано с подключением конкретного устройства к стриму, потому что падение воспроизвелось при экспериментах несколько раз.

Начало из error.log:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f2f78bb9694, pid=17235, tid=0x00007f2f75afb700
#
# JRE version: OpenJDK Runtime Environment (8.0_265-b01) (build 1.8.0_265-b01)
# Java VM: OpenJDK 64-Bit Server VM (25.265-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libavformat.so.58+0x113694]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

--------------- T H R E A D ---------------

Current thread (0x000055c5aa61d800): JavaThread "FScheduling-pool-1-thread-5" [_thread_in_native, id=17329, stack(0x00007f2f759fb000,0x00007f2f75afc000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000
 

Attachments

Yury

New Member
Добрый день.
Пожалуйста, уточните, какая сборка WCS используется. Также соберите полный отчет по этой инструкции и пришлите, используя эту форму.
Версия 5.2.863
Репорт сделали, но форма не позволяет отправлять файлы больше 30Мб. Сам архив 58 и pcap дамп почти 600. Как вам отправить данные?
 

Yury

New Member
Логи поджал и попробовал отправить через форму, но она у вас падает с ошибками:
Cообщение <1613743183.602fc44fbc2c5@flashphoner.com> для support@flashphoner.com не было доставлено через ApMailer\Smtp. Ошибка: 102: На этапе "Отправление письма" ожидался код 250, но сервер вернул 552 5.7.0 message content and attachment content guidelines. f20sm2569952ejx.16 - gsmtp

Cообщение <1613743245.602fc48d05398@flashphoner.com> для support@flashphoner.com не было доставлено через ApMailer\Smtp. Ошибка: 104: Не удалось считать данные из сокета. Ошибка: Undefined index: cert_private_key
 

vladimirterehoff

New Member
Добрый день. Спасибо за ответ. Прикладываем логи:
1. более полный лог https://drive.google.com/file/d/1Klz3NAJGCO4rTUTkRlpAPin5n9512oyH/view?usp=sharing
2. pcap.log https://drive.google.com/file/d/13TKKI_ooro17vKQtpTJjuEK30RDbYHF0/view?usp=sharing

Будем благодарны за оперативное решение или рекомендации по данной проблеме.
Через форму отправить не получается по причине ошибок форму (не отправляется).
 

Max

Administrator
Staff member
Вышлите, пожалуйста, файл с кодом класса, который используется для размещения картинок в микшере.
 

Max

Administrator
Staff member
Проанализировали логи.

Всего есть два информативных краш лога.
1) error17235.log (error.log.txt)
2) error9942.log (из отчетов)

По первому error17235.log

Краш происходит при окончании записи.
Скорее всего проблема в настройках записи:

Code:
record_streams=true
record_mixer_streams=true
record_flash_published_streams=false
stream_record_policy_template={streamName}-{mediaSessionId}
exclude_record_name_characters=:.,/#
media_dir=/usr/local/FlashphonerWebCallServer/records
Убедитесь, что все записанные файлы имеют суффикс .mp4 (строчными буквами).
Изменения суффикса может влиять на алгоритмы записи и приводить к крашу.

По второму error9942.log

Краш происходит при микшировании.
Попробуйте обновиться до более поздней версии, где были фиксы связанные с крашами микшера.

Причину краша можно наблюдать здесь:

Code:
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.flashphoner.media.mixer.video.presentation.canvas.NativeCanvas.write(JLjava/nio/ByteBuffer;IIIIIIZ)V+0
j  com.flashphoner.media.mixer.video.presentation.canvas.NativeCanvas.write(Ljava/nio/ByteBuffer;IIIIIIZ)V+18
j com.flashphoner.media.mixer.video.presentation.canvas.B.A(Ljava/awt/Point;Ljava/awt/Dimension;Lcom/flashphoner/sdk/media/YUVFrame;Z)V+44
j  com.flashphoner.media.mixer.video.presentation.canvas.B.A(Lcom/flashphoner/sdk/media/IVideoMixerLayout$Layout;)V+29
j  com.flashphoner.media.mixer.video.presentation.canvas.A.B([Lcom/flashphoner/sdk/media/IVideoMixerLayout$Layout;)V+94
j  com.flashphoner.media.mixer.video.presentation.canvas.B.A([Lcom/flashphoner/sdk/media/IVideoMixerLayout$Layout;)V+11
j  com.flashphoner.media.N.A.A(Ljava/util/List;)Ljava/util/List;+853
j  com.flashphoner.media.N.D.B(JLjava/util/List;)Ljava/util/List;+99
j  com.flashphoner.media.N.D.F()Ljava/util/List;+66
j  com.flashphoner.server.remote.B.B.Ò()V+4
j  com.flashphoner.server.remote.B.B.run()V+166
v  ~StubRoutines::call_stub
 

Yury

New Member
Вышлите, пожалуйста, файл с кодом класса, который используется для размещения картинок в микшере.
Code:
package com.flashphoner.mixerlayout;

// Import mixer layout interface
import com.flashphoner.sdk.media.IVideoMixerLayout;
// Import YUV frame description
import com.flashphoner.sdk.media.YUVFrame;

// Import Java packages to use
import java.awt.*;
import java.util.ArrayList;

public class BattleLayout implements IVideoMixerLayout {
    // Owner's stream name
    private static final String OWNER = "owner";
    // Challenger's stream name
    private static final String CHALLENGER = "challenger";

    /**
     * Function to compute layout, will be called by mixer before encoding output stream picture
     * This example computes grid layout
     * @param yuvFrames - incoming streams raw pictures array in YUV format
     * @param strings - incoming streams names array
     * @param canvasWidth - mixer output picture canwas width
     * @param canvasHeight - mixer output picture canwas heigth
     * @return array of pictures layouts
     */
    @Override
    public Layout[] computeLayout(YUVFrame[] yuvFrames, String[] strings, int canvasWidth, int canvasHeight) {
        // Declare picture layouts list to fill
        ArrayList<IVideoMixerLayout.Layout> layout = new ArrayList<>();

        int layoutHeight = canvasHeight / 2;

        // Iterate through incoming stream pictures array
        for (int c = 0; c < yuvFrames.length; c++) {
            String name = strings[c];
            int frameWidth = yuvFrames[c].getWidth();
            int frameHeight = yuvFrames[c].getHeight();

            int layoutWidth = frameWidth * canvasHeight / 2 /frameHeight;
            int x = canvasWidth / 2 - layoutWidth / 2;

            // Use Java AWT Point and Dimension
            Point currentPoint = new Point();

            if (name.startsWith(CHALLENGER)) {
                currentPoint.setLocation(x, 0);
            } else if (name.startsWith(OWNER)) {
                currentPoint.setLocation(x, canvasHeight / 2);
            } else {
                // Wrong stream name
                continue;
            }

            // Create the picture layout passing starting point, dimensions and raw picture YUV frames
            layout.add(
                new IVideoMixerLayout.Layout(currentPoint, new Dimension(layoutWidth, layoutHeight), yuvFrames[c])
            );
        }
        // Return pictures layouts calculated as array
        return layout.toArray(new IVideoMixerLayout.Layout[layout.size()]);
    }
}
 

Max

Administrator
Staff member
Добрый день.
Мы смогли воспроизвести краши микшера с Вашими настройками и Вашим кодом класса для размещения картинок. Краши воспроизводятся, если подавать в микшер потоки с размерами картинки, большими, чем размеры картинки выходного потока микшера, указанные в настройках. Например, при настройках
Code:
mixer_video_width=320
mixer_video_height=480
подача потока 640x360 и более приводит либо к падению сервера при подаче потока, либо при закрытии микшера.
Рекомендуем обновить сервер до последней сборки 5.2.903 и реализовать класс для размещения картинки с использованием специального класса Box для расчета расположения картинок. Пример исходного кода такого класса, реализованного на базе Вашего кода, прилагается. С этим примером краши при Ваших настройках микшера не воспроизводятся. Пожалуйста, проверьте.
 

Attachments

Top