crash in cft1st_128_neon

VERIFIED FIXED in Firefox 38

Status

()

--
critical
VERIFIED FIXED
4 years ago
16 days ago

People

(Reporter: CristinaM, Assigned: gcp)

Tracking

({crash})

Trunk
mozilla38
ARM
Android
crash
Points:
---

Firefox Tracking Flags

(firefox38 verified, fennec38+)

Details

(crash signature)

Attachments

(1 attachment, 1 obsolete attachment)

(Reporter)

Description

4 years ago
This bug was filed from the Socorro interface and is 
report bp-4566f943-5c4f-4381-b4fd-20e272150211.
=============================================================
Environment:
Device: Asus Transformer TF101 (Android 4.0.3);
Build: Firefox for Android 38.0a1 (2015-02-10);

Steps to reproduce:
1. Go to http://mozilla.github.com/webrtc-landing/gum_test.html;
2. Tap on 'Audio & Video';
3. Choose 'Share'.

Notes: Probably device specific, since I am not able to reproduce this on other devices.

0	libxul.so	cft1st_128_neon	android-ndk/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.7/include/arm_neon.h
1	libxul.so	cftfsub_128_C	media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_rdft.c
2	libxul.so	aec_rdft_forward_128	media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_rdft.c
3	libxul.so	TimeToFrequency	media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c
4	libxul.so	WebRtcAec_BufferFarendPartition	media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c
5	libxul.so	WebRtcAec_BufferFarend	media/webrtc/trunk/webrtc/modules/audio_processing/aec/echo_cancellation.c
6	libxul.so	webrtc::EchoCancellationImpl::ProcessRenderAudio(webrtc::AudioBuffer const*)	media/webrtc/trunk/webrtc/modules/audio_processing/echo_cancellation_impl.cc
7	libxul.so	webrtc::AudioProcessingImpl::AnalyzeReverseStreamLocked()	media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing_impl.cc
8	libxul.so	webrtc::AudioProcessingImpl::AnalyzeReverseStream(webrtc::AudioFrame*)	media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing_impl.cc
9	libxul.so	webrtc::voe::OutputMixer::APMAnalyzeReverseStream(webrtc::AudioFrame&)	media/webrtc/trunk/webrtc/voice_engine/output_mixer.cc
10	libxul.so	webrtc::VoEExternalMediaImpl::ExternalPlayoutData(short*, int, int, int, int&)	media/webrtc/trunk/webrtc/voice_engine/voe_external_media_impl.cc
11	libxul.so	mozilla::MediaEngineWebRTCAudioSource::Process(int, webrtc::ProcessingTypes, short*, int, int, bool)	dom/media/webrtc/MediaEngineWebRTCAudio.cpp
12	libxul.so	webrtc::voe::Channel::PrepareEncodeAndSend(int)	media/webrtc/trunk/webrtc/voice_engine/channel.cc
13	libxul.so	webrtc::voe::TransmitMixer::DemuxAndMix()	media/webrtc/trunk/webrtc/voice_engine/transmit_mixer.cc
14	libxul.so	webrtc::VoEBaseImpl::ProcessRecordedDataWithAPM(int const*, int, void const*, unsigned int, unsigned char, unsigned int, unsigned int, int, unsigned int, bool)	media/webrtc/trunk/webrtc/voice_engine/voe_base_impl.cc
15	libxul.so	webrtc::VoEBaseImpl::RecordedDataIsAvailable(void const*, unsigned int, unsigned char, unsigned char, unsigned int, unsigned int, int, unsigned int, bool, unsigned int&)	media/webrtc/trunk/webrtc/voice_engine/voe_base_impl.cc
16	libxul.so	webrtc::AudioDeviceBuffer::DeliverRecordedData()	media/webrtc/trunk/webrtc/modules/audio_device/audio_device_buffer.cc
17	libxul.so	webrtc::OpenSlesInput::CbThreadImpl()	media/webrtc/trunk/webrtc/modules/audio_device/android/opensles_input.cc
18	libxul.so	webrtc::ThreadPosix::Run()	media/webrtc/trunk/webrtc/system_wrappers/source/thread_posix.cc
19	libxul.so	webrtc::StartThread	media/webrtc/trunk/webrtc/system_wrappers/source/thread_posix.cc
Ø 20	libc.so	libc.so@0x12e2e	
Ø 21	libc.so	libc.so@0x12982

Updated

4 years ago
Component: General → WebRTC
Product: Firefox for Android → Core
Seems actionable. There are a good number of tft101s floating around Mozilla.
tracking-fennec: --- → ?
Assignee: nobody → gpascutto
tracking-fennec: ? → 38+
Snorp said in triage that this is Neon code being called on a device that does not support neon (Tegra 2).
(Assignee)

Comment 3

4 years ago
Upstream bug:
https://dxr.mozilla.org/mozilla-central/source/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_rdft.c?from=aec_rdft.c&case=true#583

This is missing a check for NEON. aec_rdft_init_neon unconditionally replaces the routines.
(Assignee)

Comment 4

4 years ago
But wait, there's more:

#1  FilterFarNEON (aec=0x71301000, yf=0x753cd1c0)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core_neon.c:51
#2  0x650c29d6 in ProcessBlock (aec=aec@entry=0x71301000)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c:1239
#3  0x650c43d2 in WebRtcAec_ProcessFrame (aec=0x71301000, nearend=nearend@entry=0x71213800, nearendH=nearendH@entry=
    0x0, knownDelay=knownDelay@entry=0, out=out@entry=0x71213800, outH=outH@entry=0x0)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/aec/aec_core.c:1682
#4  0x650c9c26 in ProcessExtended (skew=<optimized out>, reported_delay_ms=<optimized out>, 
    num_samples=<optimized out>, out_high=<optimized out>, out=<optimized out>, near_high=<optimized out>, 
    near=<optimized out>, self=<optimized out>)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/aec/echo_cancellation.c:834
#5  WebRtcAec_Process (aecInst=0x7077d280, nearend=<optimized out>, nearendH=<optimized out>, out=<optimized out>, 
    outH=0x0, nrOfSamples=160, msInSndCardBuf=<optimized out>, skew=0)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/aec/echo_cancellation.c:393
#6  0x650cf87a in webrtc::EchoCancellationImpl::ProcessCaptureAudio (this=0x6b408080, audio=0x6e41fee0)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/echo_cancellation_impl.cc:138
#7  0x650d2db8 in webrtc::AudioProcessingImpl::ProcessStreamLocked (this=this@entry=0x6f232c50)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing_impl.cc:486
#8  0x650d48c4 in webrtc::AudioProcessingImpl::ProcessStream (this=0x6f232c50, frame=0x715d9030)
    at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing_impl.cc:440
#9  0x6517ab82 in webrtc::voe::TransmitMixer::ProcessAudio (this=this@entry=0x715d9000, delay_ms=delay_ms@entry=55, 
    clock_drift=clock_drift@entry=0, current_mic_level=current_mic_level@entry=0, key_pressed=key_pressed@entry=
    false) at /home/morbo/git/gecko-dev/media/webrtc/trunk/webrtc/voice_engine/transmit_mixer.cc:1274
(Assignee)

Comment 5

4 years ago
Created attachment 8564093 [details] [diff] [review]
Check for NEON capability before using NEON code.
Attachment #8564093 - Flags: review?(tterribe)
Attachment #8564093 - Flags: review?(tterribe) → review+
Depends on: 864513
(Assignee)

Comment 6

4 years ago
Created attachment 8564098 [details] [diff] [review]
v2 Check for NEON capability before using NEON code.
Attachment #8564093 - Attachment is obsolete: true
Attachment #8564098 - Flags: review?(tterribe)
Attachment #8564098 - Flags: review?(tterribe) → review+
(Assignee)

Comment 8

4 years ago
Instead of a try run I will offer one Belgian beer to the relevant sheriff if this goes red on m-i.
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/ff356750af3a
Status: NEW → RESOLVED
Last Resolved: 4 years ago
status-firefox38: --- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla38

Comment 11

4 years ago
Verified as fixed in build 38.0a1 2015-02-17;
Device: Asus Transformer TF101 (Android 4.0.3)
Status: RESOLVED → VERIFIED
status-firefox38: fixed → verified
Blocks: 864513
No longer depends on: 864513

Updated

16 days ago
No longer blocks: 864513
You need to log in before you can comment on or make changes to this bug.