Skip to content

heap corruption (malloc/free errors) presumably during calibration #1130

Closed
@kolyshkin

Description

@kolyshkin
  • I confirm that this is an issue rather than a question.

Bug report

I was calibrating my LED string via web interface and noticed it became unresponsive. Checked system logs and found some messages hinting towards libc heap corruption (see below).

Steps to reproduce

Invoke "colour calibration wizard" via web interface. Play with settings.

What is expected?

No errors in log, web interface and led string is responsive while changing calibration values.

What is actually happening?

In one case, changing RGB values for a color stopped making any effect on LED string.
In another case, web server thread is gone (i.e. hyperiond no longer listens on port 9100).

System logs show:

pi@HyperBian:~ $ journalctl | grep hyperiond
Dec 30 05:54:03 HyperBian hyperiond[466]: QIODevice::write (QTcpSocket): device not open
Dec 30 05:54:03 HyperBian hyperiond[466]: QIODevice::write (QTcpSocket): device not open
Dec 30 05:54:03 HyperBian hyperiond[466]: QIODevice::write (QTcpSocket): device not open
Dec 30 05:54:03 HyperBian hyperiond[466]: QIODevice::write (QTcpSocket): device not open
Dec 30 20:59:22 HyperBian hyperiond[466]: free(): corrupted unsorted chunks
Dec 30 20:59:22 HyperBian hyperiond[466]: Hyperion caught signal :SIGABRT
Dec 30 21:00:32 HyperBian kernel: [    466]     0   466   184348    98890   591872    22888             0 hyperiond
Dec 30 21:00:32 HyperBian kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),global_oom,task_memcg=/,task=hyperiond,pid=466,uid=0
Dec 30 21:00:32 HyperBian kernel: Out of memory: Killed process 466 (hyperiond) total-vm:737392kB, anon-rss:393160kB, file-rss:2400kB, shmem-rss:0kB, UID:0 pgtables:578kB oom_score_adj:0
Dec 30 21:00:32 HyperBian kernel: oom_reaper: reaped process 466 (hyperiond), now anon-rss:0kB, file-rss:2400kB, shmem-rss:0kB
Dec 30 21:20:41 HyperBian hyperiond[1118]: 2020-12-30T21:20:41.393 hyperiond V4L2:/DEV/VI : <INFO> Signal detection area set to: 0.250000,0.250000 x 0.750000,0.750000
Dec 30 21:20:41 HyperBian hyperiond[1118]: 2020-12-30T21:20:41.400 hyperiond V4L2:/DEV/VI : <INFO> Signal threshold set to: {12, 12, 12}
Dec 30 21:31:57 HyperBian hyperiond[1118]: 2020-12-30T21:31:57.965 hyperiond V4L2:/DEV/VI : <INFO> available V4L2 devices:
Dec 30 21:31:57 HyperBian hyperiond[1118]:         /dev/video0        UVC Camera (534d:2109): USB Vid
Dec 30 21:31:57 HyperBian hyperiond[1118]:         /dev/video14        bcm2835-isp-capture0
Dec 30 21:31:57 HyperBian hyperiond[1118]:         /dev/video15        bcm2835-isp-capture1
Dec 30 21:31:57 HyperBian hyperiond[1118]: 2020-12-30T21:31:57.971 hyperiond V4L2:/DEV/VI : <INFO> search for usable video devices
Dec 30 21:31:57 HyperBian hyperiond[1118]: 2020-12-30T21:31:57.994 hyperiond V4L2:/DEV/VI : <INFO> test v4l device: /dev/video0
Dec 30 21:31:58 HyperBian hyperiond[1118]: 2020-12-30T21:31:58.010 hyperiond V4L2:/DEV/VI : <INFO> found usable v4l2 device: /dev/video0 (UVC Camera (534d:2109): USB Vid)
Dec 30 21:31:58 HyperBian hyperiond[1118]: 2020-12-30T21:31:58.018 hyperiond V4L2:/DEV/VI : <INFO> Started
Dec 30 22:18:04 HyperBian hyperiond[1118]: malloc(): unsorted double linked list corrupted
Dec 30 22:18:04 HyperBian hyperiond[1118]: Hyperion caught signal :SIGABRT

hyperiond process is active (and LED lights react to changes in the v4l input), but it no longer listens on port 9100:

pi@HyperBian:~ $ netstat -lnp4
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           -                   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           -                   
udp        0      0 0.0.0.0:47467           0.0.0.0:*                           -                   
udp        0      0 0.0.0.0:1900            0.0.0.0:*                           -                   
pi@HyperBian:~ $ ps ax | grep hyper
 1118 ?        Ssl   40:48 /usr/bin/hyperiond
 1268 pts/0    S+     0:00 grep --color=auto hyper

System

Hyperion Server: 
- Build:           (HEAD detached at 83338dc3) (Paulchen Panther-ca50487e/83338dc3-1605733041)
- Build time:      Nov 18 2020 21:32:08
- Git Remote:      https://github.com/hyperion-project/hyperion.ng
- Version:         2.0.0-alpha.9
- UI Lang:         auto (BrowserLang: en-US)
- UI Access:       default
- Avail Capt:      dispmanx,v4l2,framebuffer,qt
- Database:        read/write

Hyperion Server OS: 
- Distribution:   HyperBian GNU/Linux 10 (buster)
- Architecture:   arm
- CPU Model:      ARMv6-compatible processor rev 7 (v6l)
- CPU Type:       Raspberry Pi Zero W Rev 1.1
- CPU Revision:   9000c1
- CPU Hardware:   BCM2835
- Kernel:         linux (5.4.72+ (WS: 32))
- Qt Version:     5.7.1
- Python Version: 3.5.3
- Browser:        Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions