LINUX.ORG.RU

Сообщения wolverin

 

Чем заменить HTTP клиента?

Форум — Development

Опять очень нуждаюсь в идеи )

Есть большой парк (несколько тысяч) простых железок, часть функционала в которых реализована через HTTP, другая часть это SIP и MQTT.

Есть непреодолимое желание выпилить функционал на HTTP именно с самих железок, который причем использует одновременно 2 сервера и служащий для того, чтобы железка после событий пришедших из SIP или MQTT (к слову находящихся сейчас физически там же где и HTTP) что то сделала, например, полазила в БД или отправила push на андройд и тд.

Есть мысль уж коли приходит что то в mqtt, то и ответить надо туда же, а уж на стороне сервера эта перенесенная часть функционала будет слушать и делать то же самое, что делает множество железок, НО возникает момент, что это может стать узким местом в алгоритме из-за однопоточности обработки очереди сообщений из mqtt.

Как бы Вы поступили???

ЗЫ. цель выпиливания - упрощение и увеличение надежности работы самих железок, а так же появится простая возможность обернуть железки в простое api

 , ,

wolverin
()

template с параметром по умолчанию

Форум — Development

Очень хотелось бы (для сокращения написанного кода) в зависимости от параметра шаблона, который в общем случае может быть задан по дефолту в описании шаблона, получать НЕМНОГО отличающиеся по реализации классы

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

using guard = unique_lock<mutex>;

template <typename Cmd_t> class TQueue
{
private:
    const uint8_t maxQ;

    deque<Cmd_t> dqQ;

    mutex mtx;
public:

    TQueue(uint8_t lQueue)
    : maxQ(lQueue)
    { }

    ~TQueue()
    {
        if (!dqQ.empty())
            dqQ.clear();
    }

    uint8_t Put(Cmd_t cmd);
    uint8_t Get(Cmd_t & cmd);
};

template <typename Cmd_t> uint8_t TQueue<Cmd_t>::Put(const Cmd_t cmd)
{
    uint8_t rt = 0;
    {
        guard g(mtx);

        rt = dqQ.size();
        if (rt < maxQ)
        {
            dqQ.push_back(cmd);
            rt++;
        }
    }

    return rt;
}

пытаюсь что то эдакое туда засунуть

template <typename Cmd_t, sem_t * psem = NULL> class TQueue

gcc ругается

error: could not convert template argument ‘0l’ to ‘sem_t*’

а еще как бы в реализации Put проверить пришедший параметр psem на нулл и если нет, то вставить соответственно туда sem_post(), чтобы он был только в нужно месте, а не во всех классах ествественно.

премного буду благодарен за любую помощь )

 ,

wolverin
()

Как обратиться к std::shared_ptr<void> ???

Форум — Development

Подскажите как правильно тип привести, чтобы подсчет ссылок не поломался?

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

std::shared_ptr<linphone::Core> core >>> std::shared_ptr<void> core

проинициализировалось

auto factory = linphone::Factory::get();
core = factory->createCoreWithConfig(config, nullptr);

Как теперь здесь обратиться корректно???

...core...->addListener(std::make_shared<ClientCoreListener>())

 

wolverin
()

Как из сокета прочитанного recvmsg вытащить IP адрес?

Форум — Development

Мучаю тут тему с приклеиванием трассировки к библиотеки пинга

описание приходящей структуры msghdr и вытаскиваемой макросами из нее cmsghdr посмотрел, но как из них получить IP адрес отправителя ICMP пакета что то не догоняю

подскажите если не затруднит куда искать, на что смотреть???

на всякий случай дублирую то место в коде liboping.c где происходит чтение

payload_buffer_len = recvmsg (fd, &msghdr, /* flags = */ 0);
        if (payload_buffer_len < 0)
        {
#if WITH_DEBUG
                char errbuf[PING_ERRMSG_LEN];
                dprintf ("recvfrom: %s\n",
                                sstrerror (errno, errbuf, sizeof (errbuf)));
#endif
                return (-1);
        }
        dprintf ("Read %zi bytes from fd = %i\n", payload_buffer_len, fd);

        /* Iterate over all auxiliary data in msghdr */
        recv_ttl = -1;
        recv_qos = 0;
        for (cmsg = CMSG_FIRSTHDR (&msghdr); /* {{{ */
                        cmsg != NULL;
                        cmsg = CMSG_NXTHDR (&msghdr, cmsg))
        {
                if (cmsg->cmsg_level == SOL_SOCKET)
                {
#ifdef SO_TIMESTAMP
                        if (cmsg->cmsg_type == SO_TIMESTAMP)
                                memcpy (&pkt_now, CMSG_DATA (cmsg), sizeof (pkt_now));
#endif /* SO_TIMESTAMP */
                }
                else if (addrfam == AF_INET) /* {{{ */
                {
                        if (cmsg->cmsg_level != IPPROTO_IP)
                                continue;

                        if (cmsg->cmsg_type == IP_TOS)
                        {
                                memcpy (&recv_qos, CMSG_DATA (cmsg),
                                                sizeof (recv_qos));
                                dprintf ("TOSv4 = 0x%02"PRIx8";\n", recv_qos);
                        } else
                        if (cmsg->cmsg_type == IP_TTL)
                        {
                                memcpy (&recv_ttl, CMSG_DATA (cmsg),
                                                sizeof (recv_ttl));
                                dprintf ("TTLv4 = %i;\n", recv_ttl);
                        }
                        else
                        {
                                dprintf ("Not handling option %i.\n",
                                                cmsg->cmsg_type);
                        }
                } /* }}} */

 ,

wolverin
()

Либу traceroute/ping на C/C++

Форум — Development

Засоветуйте? )

тот что православный из убунты/дебиана

этот не предлагать ) https://habr.com/ru/articles/726714/

 , ,

wolverin
()

std::string length возвращает 16777215

Форум — Development

)) как такое может быть??? с чего вдруг пустая строка может возвращать такую длину

уже все проверил, вроде ничего память не переписывает

 

wolverin
()

Запись сырого h264

Форум — Development

Для mjpeg потока с камеры реализовал круговую запись на носитель без файловой системы благодаря тому, что jpg это ключевой кадр и структура позволяет каждую минуту в поле «комментарии» ставить дополнительную информацию (временную метку, размер кадра и координату предыдущей минуты), при желании можно даже слить через dd данные и их как то проиграет vlc, словом все кроме передачи по ентернету происходит быстро.

Теперь пришли h264 камеры, а с этим потоком как известно все сложнее - начать просмотр можно только с И кадра, куча разнообразных блоков, в отличии от жпега представление внутренней структуры кадров на Хабре как то не нашлось )

Посоветуйте что нибудь разумное как можно аналогично реализовать круговую запись h264, в приблизительно в той же концепции что и mjpg???

ВАЖНО что выполняется это все на слабенькой ARMv7

Сам пока планирую засовывать как есть поток в минутный mp4 контейнер, но возникает вопрос будут ли пропуски между минутами и насколько ресурсоемко потом делать демукс-мукс в сетевой протокол передачи (сейчас пока использую «протокол» tcp из ffmpeg для передачи)

ЗЫ. звеняйте за многа букав

 

wolverin
()

Помогите с std::function

Форум — Development

Приветствую

Суть задачи проста - получить параметры одного или всех сетевых интерфейсов, понятно что можно в векторе, например, вернуть, но можно как то вот хитрожопо сделать через std::function или что то иное есть??? Так чтобы снаружи вызова можно было построчно обработать.

код, в котором не догоняю как можно getIPs и getIP реализовать, чтобы потом их вызывать можно было???

std::string getSockToIP(const struct sockaddr * psa)
{
    uint8_t laddr = 0;
    char * addr = nullptr;
    std::string rt("");

    switch (psa->sa_family)
    {
        case AF_INET:
            addr = (char*)calloc(laddr = INET_ADDRSTRLEN, sizeof(char));
            break;
        case AF_INET6:
            addr = (char*)calloc(laddr = INET6_ADDRSTRLEN, sizeof(char));
            break;
    }

    if (laddr > 0)
    {
        inet_ntop(psa->sa_family, &((struct sockaddr_in*)(psa))->sin_addr, addr, laddr);
        rt.assign(addr);
        free(addr);
    }

    return rt;
}

std::string getIPAddr(const struct ifaddrs * pifa)
{
    std::string rt(pifa->ifa_name);
    if (pifa->ifa_addr)
        rt += " " + getSockToIP(pifa->ifa_addr);

    if (pifa->ifa_netmask)
        rt += " " + getSockToIP(pifa->ifa_netmask);

    return rt;
}

bool getIFAddrs(std::function<bool(struct ifaddrs * pifa)> cbFunc)
{
    struct ifaddrs * pifa = nullptr;
    if (getifaddrs(&pifa))
        return false;
    else
    {
        for (struct ifaddrs * p = pifa; !p; p = p->ifa_next)
            if (cbFunc(p))
                break;

        freeifaddrs(pifa);
        return true;
    }
}

void getIPs(std::function<std::string(void)> cbFunc)
{
    getIFAddrs([&](struct ifaddrs * pifa)
    {
//getIPAddr(pifa)
        return false;
    });
}

void getIP(const char * dev)
{
    getIFAddrs([&](struct ifaddrs * pifa)
    {
//getIPAddr(pifa)
        return !strcmp(pifa->ifa_name, dev);
    });
}

 

wolverin
()

av_read_frame отдает одинаковые кадры

Форум — Development

Приветствую.

В отсутствии носителя для записи локального видео архива решил делать снимки (пока по времени) с усб mjpeg камеры через библиотеку ffmpeg и столкнулся с проблемой - если захватывать с камеры кадры 1 раз в 10 минут, то они идентичны, при этом если с такой же периодичностью, но прочитать подряд 5 кадров и взять последний, то проблема уходит.

Так понимаю что камера отдает какой то буфер кадров за раз и ффмпег должен «вычитать» все, перед тем как получить новый!?

Или как можно победить проблему?

 ,

wolverin
()

Либу на С/C++ на анализ движения?

Форум — Development

Посоветуйте, пожалста???

Есть мжпег камера, делаю с нее снимки ffmpeg либой, но хотелось бы иметь возможность проанализировать дельту движа между кадрами, в тупую сравнить по размеру кадры выходит не очень.

 ,

wolverin
()

Опять хитрая очередь для 2х потоков на C++

Форум — Development

Приветствую.

Сразу к сцути - пишет значит моя приблуда с 30 кадровой камеры мжпег кадры на SD карту на одноплатнике по кругу, для снижения нагрузки и получения некой равномерности делается это таким образом - меряю время в начале цикла записи, сравниваю после и оставшееся время либо сплю до частоты 10 фпс, либо пишу сразу следующий.

Все бы ничего, но иногда требуется как посмотреть текущее видео с камеры, которое перекодируется в х264 и отдается в ртсп, так и глянуть архив, которое хоть и не нагружает цпу у армки, но читает большие объемы с сд карты и шлет их активно в сеть по удп.

В такие собсна пиковые нагрузки запись проседает и равномерность архива уезжает. Естественно тут напрашивается вторая хитрая очередь - один поток в нее равномерно добавляет кадры, второй по мере возможности льет с максимально доступной скоростью на носитель.

Но вот вопрос - как бы сделать так, чтобы на время записи-удаления из очереди И добавления в очередь - она НЕ БЛОКИРОВАЛАСЬ ??? Иба если блочить - очевидно опять будет неравномерность.

 ,

wolverin
()

Почему av_write_frame в FFmpeg такой медленный???

Форум — Development

Читаю данные с SD карты на одноплатнике и отправляю их по сети через ффмпеговские либы, дамп на передающей стороне выглядит так

Output #0, mjpeg, to 'udp://192.168.1.1:5555':
  Stream #0:0: Video: mjpeg (Baseline), yuvj422p(pc, bt470bg/unknown/unknown), 1920x1080, q=2-31, 10 fps, 90k tbn

решил тут померить почему выдает нагрузку на сеть всего 4мбит/c и оказывается операция av_write_frame занимает в среднем 300-350 мс!!!

В чем может быть причина???

К слову за те же 300 мс с карты удается считать по 4Мбайта

 ,

wolverin
()

Форумы ака «поиск помощи» vs ChatGPT

Форум — Development

Если с программированием еще сомнительно, т.к. сие действо больше творческий процесс, нежели тупое набивание букав, то похоже использование ЛЮБЫХ технических форумов аки места для поиска помощи у людей, кто ранее сталкивался с похожими проблемами в конечном итоге станет ненужным

Пришло тут мне в рассылке ffmpeg как человеку решение его проблемы подсказал ChatGPT, причем быстро и сразу точно http://ffmpeg.org/pipermail/libav-user/2023-April/013348.html

и реально, а почему не использовать более эффективный способ поиска решения???

 

wolverin
()

FFmpeg для клиент/серверной передачи

Форум — Development

Приветствую.

Необходимо передать видео через ентернеты (в общем случае через симметричные NATы с обоих сторон, т.е. это использование STUN + в моем случае сигнальный сервер MQTT, но пока для чистоты эксперимента на принимающей стороне белый ip).

Решение в лоб - отправить по запросу через mqtt с «клиента» rtp поток и получить его на «сервере» - натолкнулось естественно на ошибку об отсутствии SDP

[rtp @ 0x7f5d300008c0] Guessing on RTP content - if not received properly you need an SDP file describing it

Решением конкретно этой ошибки предлагается подгружать SDP файл в либы ffmpeg на стороне сервера, но такое не подходит иба белым сервер по итогу не будет. Конечно можно пересылать измененные параметры SDP через MQTT, создавать после этого файл на стороне сервера и грузить в avformat_open_input, но нет ли варианта попроще??? Ведь по сути разница только в IP адресе...

Так же не сочтите за наглость вопрос - в чем разница форматов у ffmpeg при стриме rtp, mpegts и rtp_mpegts, при этом исходящий (push) адрес может быть как rtp:// так и udp:// ???

Буду благодарен если кто то ткнет в конкретное место в документации и/или примере, сам пока не осилил похожее закодить https://www.programmersought.com/article/2920550131/

 , ,

wolverin
()

Самый распространенный видеоформат?

Форум — Development

Приветствую.

Накодил по своей старой теме чтение записанного архива Одновременное чтение и запись «файла»

теперь надо послать все это дело через ентернеты, планирую через ffmpeg, используя только rtp.

И вот вопрос возник - а во что лучше всего пожать видео, чтобы отправив такой ФАЙЛ хоть кому, он хоть где прочитался???

 

wolverin
()

Одновременное чтение и запись «файла»

Форум — Development

Приветствую!

Продолжаю мучать тему С++ vs прямая запись на флешку

Вроде пишется как хотел, НО теперь дошла очередь чтения записываемого видео архива, т.е. все надо делать ОДНОВРЕМЕННО.

Тем кому лень читать всякое мое старье - напомню что пишу на сырую флешку через Cишный stdio с кешем setvbuf(pf, NULL, _IOFBF, 256 * 1024) mjpeg кадры в разрешении 2мп.

Вопрос - что будет шустрее - еще раз открывать на чтение этот же диск-«файл» (как насчет недоступности для чтения того что в кеше?) или лучше все же устраивать «передергивание» позиции на уже открытом - чтение с нужной позиции, пока не приходит событие отдать «файл» на запись и т.д. ???

Критика идеи приветствуется )

 ,

wolverin
()

ffmpeg + RTSP ограничение длительности где?

Форум — Development

Приветствую, может кто сталкивался - пересжимаю из MJPEG в H264 и отдаю это через RTSP публикацию на сервер, все работает хорошо ровно 13 часов и 15 минут, потом временные метки pts/dts на сервере вдруг не с того не с сего начинают приходить с нуля, следовательно онлайн видео ложится, в коде у себя нигде такой хрени не делаю, как и не задаю длительность для онлайн стрима.

где может задаваться длительность трансляции или что может влияет???

 , , ,

wolverin
()

HTTP vs FTP vs ... ???

Форум — Development

Периодически требуется тысячам устройств проверить актуальность своего ПО и скачать последнюю версию к себе.

Устройства все на С/C++ написаны, соответственно и клиент будет на этом же, посоветуйте самый производительный способ, да чтоб еще сервер не ддосился таким обменом.

Спасибо

 ,

wolverin
()

GCC куча объектных в одно место

Форум — Development

Приветствую

Подскажите, как в makefile сложить все в одно место одной же командой, так что то ругается

gcc -c $(shell find ./lvgl/src -type f -name '*.c') -I./lvgl/ -o $@ $<

gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files

 ,

wolverin
()

Падают устройства на ARM

Форум — Admin

Есть гора у меня NanoPi Neo, которые использую помаксимуму (пока для перекодирования и стриминга через rtsp).

Вроде ну все уж сделал - усб камеру, сеть, флешку - повесил прерывания на разные ядра цпу, поднял частоту на максимум, один фиг - то камера отвалится, то сеть, в dmesg такое

[Wed Jan 25 08:05:02 2023] INFO: rcu_sched self-detected stall on CPU
[Wed Jan 25 08:05:02 2023]      1-...: (1 GPs behind) idle=326/140000000000002/0 softirq=206202/206203 fqs=1871
[Wed Jan 25 08:05:02 2023] INFO: rcu_sched detected stalls on CPUs/tasks:
[Wed Jan 25 08:05:02 2023]       (t=4203 jiffies g=96027 c=96026 q=426)
[Wed Jan 25 08:05:02 2023] NMI backtrace for cpu 1
[Wed Jan 25 08:05:02 2023] CPU: 1 PID: 3269 Comm: kworker/1:0 Tainted: G           O    4.14.111 #126
[Wed Jan 25 08:05:02 2023] Hardware name: sun8i
[Wed Jan 25 08:05:02 2023] Workqueue: events dbs_work_handler
[Wed Jan 25 08:05:02 2023] [<c02287fc>] (unwind_backtrace) from [<c0225398>] (show_stack+0x10/0x14)
[Wed Jan 25 08:05:02 2023] [<c0225398>] (show_stack) from [<c0a1b5bc>] (dump_stack+0x94/0xa8)
[Wed Jan 25 08:05:02 2023] [<c0a1b5bc>] (dump_stack) from [<c0a20e70>] (nmi_cpu_backtrace+0xc0/0xc4)
[Wed Jan 25 08:05:02 2023] [<c0a20e70>] (nmi_cpu_backtrace) from [<c0a20f54>] (nmi_trigger_cpumask_backtrace+0xe0/0x11c)
[Wed Jan 25 08:05:02 2023] [<c0a20f54>] (nmi_trigger_cpumask_backtrace) from [<c0294c4c>] (rcu_dump_cpu_stacks+0x98/0xc8)
[Wed Jan 25 08:05:02 2023] [<c0294c4c>] (rcu_dump_cpu_stacks) from [<c0294368>] (rcu_check_callbacks+0x764/0x8e4)
[Wed Jan 25 08:05:02 2023] [<c0294368>] (rcu_check_callbacks) from [<c0297ce0>] (update_process_times+0x30/0x5c)
[Wed Jan 25 08:05:02 2023] [<c0297ce0>] (update_process_times) from [<c02a7d98>] (tick_sched_timer+0x40/0x9c)
[Wed Jan 25 08:05:02 2023] [<c02a7d98>] (tick_sched_timer) from [<c0298ac8>] (__hrtimer_run_queues+0x110/0x184)
[Wed Jan 25 08:05:02 2023] [<c0298ac8>] (__hrtimer_run_queues) from [<c0298d04>] (hrtimer_interrupt+0xb8/0x20c)
[Wed Jan 25 08:05:02 2023] [<c0298d04>] (hrtimer_interrupt) from [<c07eef60>] (arch_timer_handler_phys+0x28/0x30)
[Wed Jan 25 08:05:02 2023] [<c07eef60>] (arch_timer_handler_phys) from [<c0289134>] (handle_percpu_devid_irq+0x74/0x134)
[Wed Jan 25 08:05:02 2023] [<c0289134>] (handle_percpu_devid_irq) from [<c0284380>] (generic_handle_irq+0x24/0x34)
[Wed Jan 25 08:05:02 2023] [<c0284380>] (generic_handle_irq) from [<c02848a0>] (__handle_domain_irq+0x5c/0xb4)
[Wed Jan 25 08:05:02 2023] [<c02848a0>] (__handle_domain_irq) from [<c0201528>] (gic_handle_irq+0x3c/0x78)
[Wed Jan 25 08:05:02 2023] [<c0201528>] (gic_handle_irq) from [<c0225e78>] (__irq_svc+0x58/0x74)
[Wed Jan 25 08:05:02 2023] Exception stack(0xc9e67c18 to 0xc9e67c60)
[Wed Jan 25 08:05:02 2023] 7c00:                                                       00000000 600a0193
[Wed Jan 25 08:05:02 2023] 7c20: 00000013 00009fcb defb6800 600a0113 c9f0b800 00000000 c9f0b8e8 c1061520
[Wed Jan 25 08:05:02 2023] 7c40: c1202080 40000000 df4019c0 c9e67c68 c06f39d8 c06d9da0 600a0113 ffffffff
[Wed Jan 25 08:05:02 2023] [<c0225e78>] (__irq_svc) from [<c06d9da0>] (__usb_hcd_giveback_urb+0x80/0x148)
[Wed Jan 25 08:05:02 2023] [<c06d9da0>] (__usb_hcd_giveback_urb) from [<c06daaa0>] (usb_giveback_urb_bh+0x9c/0xec)
[Wed Jan 25 08:05:02 2023] [<c06daaa0>] (usb_giveback_urb_bh) from [<c02458bc>] (tasklet_hi_action+0x74/0x110)
[Wed Jan 25 08:05:02 2023] [<c02458bc>] (tasklet_hi_action) from [<c020165c>] (__do_softirq+0xf4/0x220)
[Wed Jan 25 08:05:02 2023] [<c020165c>] (__do_softirq) from [<c0245d64>] (irq_exit+0xe0/0x13c)
[Wed Jan 25 08:05:02 2023] [<c0245d64>] (irq_exit) from [<c02848a4>] (__handle_domain_irq+0x60/0xb4)
[Wed Jan 25 08:05:02 2023] [<c02848a4>] (__handle_domain_irq) from [<c0201528>] (gic_handle_irq+0x3c/0x78)
[Wed Jan 25 08:05:02 2023] [<c0201528>] (gic_handle_irq) from [<c0225e78>] (__irq_svc+0x58/0x74)
[Wed Jan 25 08:05:02 2023] Exception stack(0xc9e67d40 to 0xc9e67d88)
[Wed Jan 25 08:05:02 2023] 7d40: 80befc00 00000000 00000001 1c9c3800 00000002 00000001 80befc00 80befc00
[Wed Jan 25 08:05:02 2023] 7d60: 1c9c3800 1c9c3800 00000001 00000001 00000001 c9e67d90 9bdd3c00 c05971b4
[Wed Jan 25 08:05:02 2023] 7d80: 800a0013 ffffffff
[Wed Jan 25 08:05:02 2023] [<c0225e78>] (__irq_svc) from [<c05971b4>] (ccu_nkmp_find_best+0x178/0x20c)
[Wed Jan 25 08:05:02 2023] [<c05971b4>] (ccu_nkmp_find_best) from [<c0597480>] (ccu_nkmp_set_rate+0xb4/0x1e8)
[Wed Jan 25 08:05:02 2023] [<c0597480>] (ccu_nkmp_set_rate) from [<c058ebb8>] (clk_change_rate+0x1bc/0x254)
[Wed Jan 25 08:05:02 2023] [<c058ebb8>] (clk_change_rate) from [<c058ee88>] (clk_core_set_rate_nolock+0x68/0xb0)
[Wed Jan 25 08:05:02 2023] [<c058ee88>] (clk_core_set_rate_nolock) from [<c058eef4>] (clk_set_rate+0x24/0x34)
[Wed Jan 25 08:05:02 2023] [<c058eef4>] (clk_set_rate) from [<c0625d80>] (dev_pm_opp_set_rate+0x1e0/0x384)
[Wed Jan 25 08:05:02 2023] [<c0625d80>] (dev_pm_opp_set_rate) from [<c07cd168>] (__cpufreq_driver_target+0x24c/0x5c8)
[Wed Jan 25 08:05:02 2023] [<c07cd168>] (__cpufreq_driver_target) from [<c07d1234>] (od_dbs_update+0xe0/0x168)
[Wed Jan 25 08:05:02 2023] [<c07d1234>] (od_dbs_update) from [<c07d1b88>] (dbs_work_handler+0x2c/0x60)
[Wed Jan 25 08:05:02 2023] [<c07d1b88>] (dbs_work_handler) from [<c02576fc>] (process_one_work+0x138/0x34c)
[Wed Jan 25 08:05:02 2023] [<c02576fc>] (process_one_work) from [<c0257944>] (worker_thread+0x34/0x52c)
[Wed Jan 25 08:05:02 2023] [<c0257944>] (worker_thread) from [<c025d020>] (kthread+0x128/0x158)
[Wed Jan 25 08:05:02 2023] [<c025d020>] (kthread) from [<c0222058>] (ret_from_fork+0x14/0x3c)
[Wed Jan 25 08:05:02 2023]      1-...: (1 GPs behind) idle=326/140000000000002/0 softirq=206202/206203 fqs=1874
[Wed Jan 25 08:05:02 2023]      (detected by 2, t=4205 jiffies, g=96027, c=96026, q=434)
[Wed Jan 25 08:05:02 2023] Sending NMI from CPU 2 to CPUs 1:
[Wed Jan 25 08:05:02 2023] NMI backtrace for cpu 1
[Wed Jan 25 08:05:02 2023] CPU: 1 PID: 3269 Comm: kworker/1:0 Tainted: G           O    4.14.111 #126
[Wed Jan 25 08:05:02 2023] Hardware name: sun8i
[Wed Jan 25 08:05:02 2023] Workqueue: events dbs_work_handler
[Wed Jan 25 08:05:02 2023] task: de636400 task.stack: c9e66000
[Wed Jan 25 08:05:02 2023] PC is at __usb_hcd_giveback_urb+0x80/0x148
[Wed Jan 25 08:05:02 2023] LR is at ehci_urb_enqueue+0xa3c/0xd98
[Wed Jan 25 08:05:02 2023] pc : [<c06d9da0>]    lr : [<c06f39d8>]    psr: 600a0113
[Wed Jan 25 08:05:02 2023] sp : c9e67c68  ip : df4019c0  fp : 40000000
[Wed Jan 25 08:05:02 2023] r10: c1202080  r9 : c1061520  r8 : c9f0b8e8
[Wed Jan 25 08:05:02 2023] r7 : 00000000  r6 : c9f0b800  r5 : 600a0113  r4 : defb7000
[Wed Jan 25 08:05:02 2023] r3 : 00009fd1  r2 : 0000000b  r1 : 600a0193  r0 : 00000000
[Wed Jan 25 08:05:02 2023] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[Wed Jan 25 08:05:02 2023] Control: 30c5387d  Table: 5ebc9fc0  DAC: 3f1634e1
[Wed Jan 25 08:05:02 2023] CPU: 1 PID: 3269 Comm: kworker/1:0 Tainted: G           O    4.14.111 #126
[Wed Jan 25 08:05:02 2023] Hardware name: sun8i
[Wed Jan 25 08:05:02 2023] Workqueue: events dbs_work_handler
[Wed Jan 25 08:05:02 2023] [<c02287fc>] (unwind_backtrace) from [<c0225398>] (show_stack+0x10/0x14)
[Wed Jan 25 08:05:02 2023] [<c0225398>] (show_stack) from [<c0a1b5bc>] (dump_stack+0x94/0xa8)
[Wed Jan 25 08:05:02 2023] [<c0a1b5bc>] (dump_stack) from [<c0a20e24>] (nmi_cpu_backtrace+0x74/0xc4)
[Wed Jan 25 08:05:02 2023] [<c0a20e24>] (nmi_cpu_backtrace) from [<c0227800>] (handle_IPI+0xac/0x194)
[Wed Jan 25 08:05:02 2023] [<c0227800>] (handle_IPI) from [<c0201560>] (gic_handle_irq+0x74/0x78)
[Wed Jan 25 08:05:02 2023] [<c0201560>] (gic_handle_irq) from [<c0225e78>] (__irq_svc+0x58/0x74)
[Wed Jan 25 08:05:02 2023] Exception stack(0xc9e67c18 to 0xc9e67c60)
[Wed Jan 25 08:05:02 2023] 7c00:                                                       00000000 600a0193
[Wed Jan 25 08:05:02 2023] 7c20: 0000000b 00009fd1 defb7000 600a0113 c9f0b800 00000000 c9f0b8e8 c1061520
[Wed Jan 25 08:05:02 2023] 7c40: c1202080 40000000 df4019c0 c9e67c68 c06f39d8 c06d9da0 600a0113 ffffffff
[Wed Jan 25 08:05:02 2023] [<c0225e78>] (__irq_svc) from [<c06d9da0>] (__usb_hcd_giveback_urb+0x80/0x148)
[Wed Jan 25 08:05:02 2023] [<c06d9da0>] (__usb_hcd_giveback_urb) from [<c06daaa0>] (usb_giveback_urb_bh+0x9c/0xec)
[Wed Jan 25 08:05:02 2023] [<c06daaa0>] (usb_giveback_urb_bh) from [<c02458bc>] (tasklet_hi_action+0x74/0x110)
[Wed Jan 25 08:05:02 2023] [<c02458bc>] (tasklet_hi_action) from [<c020165c>] (__do_softirq+0xf4/0x220)
[Wed Jan 25 08:05:02 2023] [<c020165c>] (__do_softirq) from [<c0245d64>] (irq_exit+0xe0/0x13c)
[Wed Jan 25 08:05:02 2023] [<c0245d64>] (irq_exit) from [<c02848a4>] (__handle_domain_irq+0x60/0xb4)
[Wed Jan 25 08:05:02 2023] [<c02848a4>] (__handle_domain_irq) from [<c0201528>] (gic_handle_irq+0x3c/0x78)
[Wed Jan 25 08:05:02 2023] [<c0201528>] (gic_handle_irq) from [<c0225e78>] (__irq_svc+0x58/0x74)
[Wed Jan 25 08:05:02 2023] Exception stack(0xc9e67d40 to 0xc9e67d88)
[Wed Jan 25 08:05:02 2023] 7d40: 80befc00 00000000 00000001 1c9c3800 00000002 00000001 80befc00 80befc00
[Wed Jan 25 08:05:02 2023] 7d60: 1c9c3800 1c9c3800 00000001 00000001 00000001 c9e67d90 9bdd3c00 c05971b4
[Wed Jan 25 08:05:02 2023] 7d80: 800a0013 ffffffff
[Wed Jan 25 08:05:02 2023] [<c0225e78>] (__irq_svc) from [<c05971b4>] (ccu_nkmp_find_best+0x178/0x20c)
[Wed Jan 25 08:05:02 2023] [<c05971b4>] (ccu_nkmp_find_best) from [<c0597480>] (ccu_nkmp_set_rate+0xb4/0x1e8)
[Wed Jan 25 08:05:02 2023] [<c0597480>] (ccu_nkmp_set_rate) from [<c058ebb8>] (clk_change_rate+0x1bc/0x254)
[Wed Jan 25 08:05:02 2023] [<c058ebb8>] (clk_change_rate) from [<c058ee88>] (clk_core_set_rate_nolock+0x68/0xb0)
[Wed Jan 25 08:05:02 2023] [<c058ee88>] (clk_core_set_rate_nolock) from [<c058eef4>] (clk_set_rate+0x24/0x34)
[Wed Jan 25 08:05:02 2023] [<c058eef4>] (clk_set_rate) from [<c0625d80>] (dev_pm_opp_set_rate+0x1e0/0x384)
[Wed Jan 25 08:05:02 2023] [<c0625d80>] (dev_pm_opp_set_rate) from [<c07cd168>] (__cpufreq_driver_target+0x24c/0x5c8)
[Wed Jan 25 08:05:02 2023] [<c07cd168>] (__cpufreq_driver_target) from [<c07d1234>] (od_dbs_update+0xe0/0x168)
[Wed Jan 25 08:05:02 2023] [<c07d1234>] (od_dbs_update) from [<c07d1b88>] (dbs_work_handler+0x2c/0x60)
[Wed Jan 25 08:05:02 2023] [<c07d1b88>] (dbs_work_handler) from [<c02576fc>] (process_one_work+0x138/0x34c)
[Wed Jan 25 08:05:02 2023] [<c02576fc>] (process_one_work) from [<c0257944>] (worker_thread+0x34/0x52c)
[Wed Jan 25 08:05:02 2023] [<c0257944>] (worker_thread) from [<c025d020>] (kthread+0x128/0x158)
[Wed Jan 25 08:05:02 2023] [<c025d020>] (kthread) from [<c0222058>] (ret_from_fork+0x14/0x3c)

Ядро там 4.14.111, пакеты Ubuntu 16.04.7 LTS

Посоветуйте, что еще можно сделать???

 4.14

wolverin
()

RSS подписка на новые темы