grishka / libtgvoip

VoIP library for Telegram clients
The Unlicense
387 stars 156 forks source link

Calls crash (Capture buffer is too big) on telegram desktop #61

Closed llybin closed 5 years ago

llybin commented 5 years ago
telegram-desktop 
QEventLoop: Cannot be used without QApplication
QApplication: invalid style override passed, ignoring it.
D/tgvoip: === Updating voip config ===
V/tgvoip: adsp_good_impls -> (Qualcomm Fluence)
V/tgvoip: audio_bitrate_step_decr -> 1000.000000
V/tgvoip: audio_bitrate_step_incr -> 1000.000000
V/tgvoip: audio_congestion_window -> 1024.000000
V/tgvoip: audio_frame_size -> 60.000000
V/tgvoip: audio_init_bitrate -> 16000.000000
V/tgvoip: audio_init_bitrate_edge -> 8000.000000
V/tgvoip: audio_init_bitrate_gprs -> 8000.000000
V/tgvoip: audio_init_bitrate_saving -> 8000.000000
V/tgvoip: audio_max_bitrate -> 20000.000000
V/tgvoip: audio_max_bitrate_edge -> 16000.000000
V/tgvoip: audio_max_bitrate_gprs -> 8000.000000
V/tgvoip: audio_max_bitrate_saving -> 8000.000000
V/tgvoip: force_tcp -> false
V/tgvoip: jitter_initial_delay_60 -> 2.000000
V/tgvoip: jitter_losses_to_reset -> 20.000000
V/tgvoip: jitter_max_delay_60 -> 10.000000
V/tgvoip: jitter_max_slots_60 -> 20.000000
V/tgvoip: jitter_min_delay_60 -> 2.000000
V/tgvoip: jitter_resync_threshold -> 0.500000
V/tgvoip: use_system_aec -> true
V/tgvoip: use_system_ns -> true
Invalid return value 0 for stream protocol
Invalid return value 0 for stream protocol                                                                                                                                                                        
Invalid return value 0 for stream protocol                                                                                                                                                                        
W/tgvoip: Set remote endpoints, allowP2P=0, connectionMaxLayer=65
V/tgvoip: Adding endpoint: 91.108.16.1:522, UDP
V/tgvoip: Adding endpoint: 91.108.16.2:536, UDP
V/tgvoip: Adding endpoint: 91.108.12.2:523, UDP
V/tgvoip: Adding endpoint: 91.108.12.3:534, UDP
V/tgvoip: Adding endpoint: 91.108.8.8:533, UDP
V/tgvoip: Adding endpoint: 91.108.8.4:527, UDP
I/tgvoip: update data saving mode, config 0, enabled 0, reqd by peer 0
W/tgvoip: Starting voip controller
V/tgvoip: trying bind to port 23918
D/tgvoip: Bound to local UDP port 23918
I/tgvoip: Receive thread starting
I/tgvoip: before create audio io
V/tgvoip: Socket 40 is ready to send
I/tgvoip: AEC: 1 NS: 1 AGC: 1
I/tgvoip: Audio initialization took 0.004538 seconds
V/tgvoip: Call state changed to 2
V/tgvoip: Sending UDP ping to 91.108.8.4:527, id 7429564131068570887
V/tgvoip: Sending UDP ping to 91.108.8.8:533, id -3714599649252290104
V/tgvoip: Sending UDP ping to 91.108.12.2:523, id 3932229395933083432
V/tgvoip: Sending UDP ping to 91.108.12.3:534, id 8940309287646375835
V/tgvoip: Sending UDP ping to 91.108.16.1:522, id 7305415550235190477
V/tgvoip: Sending UDP ping to 91.108.16.2:536, id 7118879853019769748
I/tgvoip: === send thread exiting ===
I/tgvoip: Detected IPv4 connectivity, will not try IPv6
V/tgvoip: Received UDP ping reply from 91.108.16.2:536: date=1544774617, queryID=7118879853019769748, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.16.1:522: date=1544774617, queryID=7305415550235190477, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.8.8:533: date=1544774617, queryID=-3714599649252290104, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.8.4:527: date=1544774617, queryID=7429564131068570887, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.12.2:523: date=1544774617, queryID=3932229395933083432, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.12.3:534: date=1544774617, queryID=8940309287646375835, my IP=124.121.195.2, my port=23918
V/tgvoip: Sending UDP ping to 91.108.8.4:527, id -8360024936597700976
V/tgvoip: Sending UDP ping to 91.108.8.8:533, id 1418681432007352516
V/tgvoip: Sending UDP ping to 91.108.12.2:523, id -8146706013176485231
V/tgvoip: Sending UDP ping to 91.108.12.3:534, id 3282827147929495642
V/tgvoip: Sending UDP ping to 91.108.16.1:522, id -6266966635262632100
V/tgvoip: Sending UDP ping to 91.108.16.2:536, id -5337940464962887410
V/tgvoip: Received UDP ping reply from 91.108.16.2:536: date=1544774618, queryID=-5337940464962887410, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.16.1:522: date=1544774618, queryID=-6266966635262632100, my IP=124.121.195.2, my port=23918
W/tgvoip: Received packet has wrong hash after decryption
D/tgvoip: Successfully decrypted packet in MTProto2.0 fallback, upgrading
D/tgvoip: Received init
I/tgvoip: Peer version is 6
I/tgvoip: Sending init ack
W/tgvoip: Received duplicated packet for seq 1
W/tgvoip: Received duplicated packet for seq 1
W/tgvoip: Received duplicated packet for seq 1
W/tgvoip: Received duplicated packet for seq 1
V/tgvoip: Received UDP ping reply from 91.108.8.8:533: date=1544774618, queryID=1418681432007352516, my IP=124.121.195.2, my port=23918
W/tgvoip: Received duplicated packet for seq 1
V/tgvoip: Received UDP ping reply from 91.108.8.4:527: date=1544774618, queryID=-8360024936597700976, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.12.2:523: date=1544774618, queryID=-8146706013176485231, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.12.3:534: date=1544774618, queryID=3282827147929495642, my IP=124.121.195.2, my port=23918
Invalid return value 0 for stream protocol
Invalid return value 0 for stream protocol                                                                                                                                                                        
V/tgvoip: Sending UDP ping to 91.108.8.4:527, id 8253367478718927017
V/tgvoip: Sending UDP ping to 91.108.8.8:533, id 4676351707000721239
V/tgvoip: Sending UDP ping to 91.108.12.2:523, id -7691665202932459463
V/tgvoip: Sending UDP ping to 91.108.12.3:534, id 4221351367275357709
V/tgvoip: Sending UDP ping to 91.108.16.1:522, id -5127233573755623357
V/tgvoip: Sending UDP ping to 91.108.16.2:536, id -2035872361814348440
W/tgvoip: received packet for unknown stream 1
V/tgvoip: Received UDP ping reply from 91.108.16.2:536: date=1544774618, queryID=-2035872361814348440, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.16.1:522: date=1544774618, queryID=-5127233573755623357, my IP=124.121.195.2, my port=23918
W/tgvoip: received packet for unknown stream 1
W/tgvoip: received packet for unknown stream 1
W/tgvoip: received packet for unknown stream 1
D/tgvoip: Received init
I/tgvoip: Peer version is 6
I/tgvoip: Sending init ack
W/tgvoip: Received duplicated packet for seq 6
W/tgvoip: Received duplicated packet for seq 6
D/tgvoip: Received init ack
I/tgvoip: peer version from init ack 6
I/tgvoip: jitter: set min packet count 2
I/tgvoip: Audio I/O ready
I/tgvoip: decoder: packets per frame 3
V/tgvoip: jitter: found no packet for timestamp 0 (last put = 0, lost = 0)
V/tgvoip: jitter: found no packet for timestamp 60 (last put = 0, lost = 0)
V/tgvoip: starting encoder, packets per frame=3
I/tgvoip: jitter: resyncing, next timestamp = 120 (step=60, minDelay=2.000000)
W/tgvoip: Received duplicated packet for seq 6
W/tgvoip: Received duplicated packet for seq 6
V/tgvoip: Received UDP ping reply from 91.108.8.8:533: date=1544774618, queryID=4676351707000721239, my IP=124.121.195.2, my port=23918
W/tgvoip: Received duplicated packet for seq 6
V/tgvoip: Received UDP ping reply from 91.108.8.4:527: date=1544774618, queryID=8253367478718927017, my IP=124.121.195.2, my port=23918
V/tgvoip: opus_encoder: setting bitrate to 16000
V/tgvoip: Received UDP ping reply from 91.108.12.2:523: date=1544774618, queryID=-7691665202932459463, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.12.3:534: date=1544774618, queryID=4221351367275357709, my IP=124.121.195.2, my port=23918
V/tgvoip: Sending UDP ping to 91.108.8.4:527, id -5401977422555754832
V/tgvoip: Sending UDP ping to 91.108.8.8:533, id 9052634242140961646
V/tgvoip: Sending UDP ping to 91.108.12.2:523, id -1292934664385299100
V/tgvoip: Sending UDP ping to 91.108.12.3:534, id 506481494673553725
V/tgvoip: Sending UDP ping to 91.108.16.1:522, id -178482456229748841
V/tgvoip: Sending UDP ping to 91.108.16.2:536, id -8683632577319455314
V/tgvoip: Received UDP ping reply from 91.108.16.2:536: date=1544774619, queryID=-8683632577319455314, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.16.1:522: date=1544774619, queryID=-178482456229748841, my IP=124.121.195.2, my port=23918
D/tgvoip: Received init
I/tgvoip: Peer version is 6
I/tgvoip: Sending init ack
W/tgvoip: Received duplicated packet for seq 16
W/tgvoip: Received duplicated packet for seq 16
W/tgvoip: Received duplicated packet for seq 16
W/tgvoip: Received duplicated packet for seq 16
V/tgvoip: Received UDP ping reply from 91.108.8.8:533: date=1544774619, queryID=9052634242140961646, my IP=124.121.195.2, my port=23918
W/tgvoip: Received duplicated packet for seq 16
V/tgvoip: Received UDP ping reply from 91.108.8.4:527: date=1544774619, queryID=-5401977422555754832, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.12.2:523: date=1544774619, queryID=-1292934664385299100, my IP=124.121.195.2, my port=23918
V/tgvoip: Received UDP ping reply from 91.108.12.3:534: date=1544774619, queryID=506481494673553725, my IP=124.121.195.2, my port=23918
E/tgvoip: Capture buffer is too big (16112)
[1]    5516 segmentation fault (core dumped)  telegram-desktop

Linux, pulseaudio

grishka commented 5 years ago

Could you please tell me more about your PulseAudio configuration? Do you have any other app use audio when this happens?

llybin commented 5 years ago

Only telegram use audio.

daemon.conf

# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; enable-memfd = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no

; high-priority = yes
; nice-level = -11

; realtime-scheduling = yes
; realtime-priority = 5

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

resample-method = soxr-vhq ; speex-float-1
; avoid-resampling = false
; enable-remixing = yes
; remixing-use-all-sink-channels = yes
; enable-lfe-remixing = no
; lfe-crossover-freq = 0

flat-volumes = no
; flat-volumes = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

default-sample-format = float32le ; s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000
default-sample-channels = 6 ; 2
; default-channel-map = front-left,front-right

default-fragments = 2 ; 4
default-fragment-size-msec = 250 ; 25

; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0

client.conf

# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for PulseAudio clients. See pulse-client.conf(5) for
## more information. Default values are commented out.  Use either ; or # for
## commenting.

; default-sink =
; default-source =
; default-server =
; default-dbus-server =

autospawn = no
; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog

; cookie-file =

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB

; auto-connect-localhost = no
; auto-connect-display = no

default.pa

#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started per-user
# (i.e. not in system mode)

.fail

### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Automatically augment property information from .desktop files
### stored in /usr/share/application
load-module module-augment-properties

### Should be after module-*-restore but before module-*-detect
load-module module-switch-on-port-available

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect tsched=0
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif

### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
.fail
.endif

### Automatically load driver modules for Bluetooth hardware
.ifexists module-bluetooth-policy.so
load-module module-bluetooth-policy
.endif

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

### Load several protocols
load-module module-dbus-protocol
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
#load-module module-esound-protocol-tcp
#load-module module-native-protocol-tcp
#load-module module-zeroconf-publish

### Load the RTP receiver module (also configured via paprefs, see above)
#load-module module-rtp-recv

### Load the RTP sender module (also configured via paprefs, see above)
#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
#load-module module-rtp-send source=rtp.monitor

### Load additional modules from GSettings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
.ifexists module-gsettings.so
.nofail
load-module module-gsettings
.fail
.endif

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Honour intended role device property
load-module module-intended-roles

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
.ifexists module-console-kit.so
load-module module-console-kit
.endif
.ifexists module-systemd-login.so
load-module module-systemd-login
.endif

### Enable positioned event sounds
load-module module-position-event-sounds

### Cork music/video streams when a phone stream is active
load-module module-role-cork

### Modules to allow autoloading of filters (such as echo cancellation)
### on demand. module-filter-heuristics tries to determine what filters
### make sense, and module-filter-apply does the heavy-lifting of
### loading modules and rerouting streams.
load-module module-filter-heuristics
load-module module-filter-apply

### Make some devices default
#set-default-sink output
#set-default-source input

### Enable Echo/Noise-Cancellation
load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1" source_name=echoCancel_source sink_name=echoCancel_sink
set-default-source echoCancel_source
set-default-sink echoCancel_sink

system.pa

#!/usr/bin/pulseaudio -nF
#
# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

# This startup script is used only if PulseAudio is started in system
# mode.

### Automatically restore the volume of streams and devices
load-module module-device-restore
load-module module-stream-restore
load-module module-card-restore

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev/hal support)
load-module module-detect
.endif

### Load several protocols
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix
.endif
load-module module-native-protocol-unix

### Automatically restore the default sink/source when changed by the user
### during runtime
### NOTE: This should be loaded as early as possible so that subsequent modules
### that look up the default sink/source get the right value
load-module module-default-device-restore

### Automatically move streams to the default sink if the sink they are
### connected to dies, similar for sources
load-module module-rescue-streams

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

### Enable positioned event sounds
load-module module-position-event-sounds
llybin commented 5 years ago

I updated the configuration of pulse audio, the problem is gone.