Closed Bug 1415083 Opened 7 years ago Closed 7 years ago

ERROR: AddressSanitizer: stack-use-after-scope in ~Movable from TestTArray.cpp

Categories

(Core :: XPCOM, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla58
Tracking Status
firefox58 --- fixed

People

(Reporter: glandium, Assigned: JamesCheng)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

From an ASAN build with clang 5 (with the patch from bug 1409267 applied):

[task 2017-11-07T08:18:06.854Z] 08:18:06    ERROR -  ==965==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7ffca38c28b0 at pc 0x7f26bd8cd3de bp 0x7ffca38c27c0 sp 0x7ffca38c27b8
[task 2017-11-07T08:18:06.855Z] 08:18:06     INFO -  READ of size 4 at 0x7ffca38c28b0 thread T0
[task 2017-11-07T08:18:07.440Z] 08:18:07     INFO -      #0 0x7f26bd8cd3dd in ~Movable /builds/worker/workspace/build/src/xpcom/tests/gtest/TestTArray.cpp:44:29
[task 2017-11-07T08:18:07.440Z] 08:18:07     INFO -      #1 0x7f26bd8cd3dd in Destruct /builds/worker/workspace/build/src/obj-firefox/dist/include/nsTArray.h:562
[task 2017-11-07T08:18:07.440Z] 08:18:07     INFO -      #2 0x7f26bd8cd3dd in DestructRange /builds/worker/workspace/build/src/obj-firefox/dist/include/nsTArray.h:2026
[task 2017-11-07T08:18:07.441Z] 08:18:07     INFO -      #3 0x7f26bd8cd3dd in nsTArray_Impl<TestTArray::Movable, nsTArrayInfallibleAllocator>::RemoveElementsAt(unsigned long, unsigned long) /builds/worker/workspace/build/src/obj-firefox/dist/include/nsTArray.h:2079
[task 2017-11-07T08:18:07.441Z] 08:18:07     INFO -      #4 0x7f26bd8cc090 in Clear /builds/worker/workspace/build/src/obj-firefox/dist/include/nsTArray.h:1752:18
[task 2017-11-07T08:18:07.441Z] 08:18:07     INFO -      #5 0x7f26bd8cc090 in ~nsTArray_Impl /builds/worker/workspace/build/src/obj-firefox/dist/include/nsTArray.h:885
[task 2017-11-07T08:18:07.442Z] 08:18:07     INFO -      #6 0x7f26bd8cc090 in TestTArray::TArray_CopyOverlappingForwards_Test::TestBody() /builds/worker/workspace/build/src/xpcom/tests/gtest/TestTArray.cpp:169
[task 2017-11-07T08:18:07.458Z] 08:18:07     INFO -      #7 0x7f26be173b5c in HandleExceptionsInMethodIfSupported<testing::Test, void> /builds/worker/workspace/build/src/testing/gtest/gtest/src/gtest.cc:2460:12
[task 2017-11-07T08:18:07.458Z] 08:18:07     INFO -      #8 0x7f26be173b5c in testing::Test::Run() /builds/worker/workspace/build/src/testing/gtest/gtest/src/gtest.cc:2476
[task 2017-11-07T08:18:07.459Z] 08:18:07     INFO -      #9 0x7f26be176074 in testing::TestInfo::Run() /builds/worker/workspace/build/src/testing/gtest/gtest/src/gtest.cc:2658:11
[task 2017-11-07T08:18:07.459Z] 08:18:07     INFO -      #10 0x7f26be1770c6 in testing::TestCase::Run() /builds/worker/workspace/build/src/testing/gtest/gtest/src/gtest.cc:2776:28
[task 2017-11-07T08:18:07.460Z] 08:18:07     INFO -      #11 0x7f26be18e076 in testing::internal::UnitTestImpl::RunAllTests() /builds/worker/workspace/build/src/testing/gtest/gtest/src/gtest.cc:4651:43
[task 2017-11-07T08:18:07.460Z] 08:18:07     INFO -      #12 0x7f26be18d5fa in HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> /builds/worker/workspace/build/src/testing/gtest/gtest/src/gtest.cc:2460:12
[task 2017-11-07T08:18:07.460Z] 08:18:07     INFO -      #13 0x7f26be18d5fa in testing::UnitTest::Run() /builds/worker/workspace/build/src/testing/gtest/gtest/src/gtest.cc:4259
[task 2017-11-07T08:18:07.461Z] 08:18:07     INFO -      #14 0x7f26be1bece9 in RUN_ALL_TESTS /builds/worker/workspace/build/src/obj-firefox/dist/include/gtest/gtest.h:2233:46
[task 2017-11-07T08:18:07.461Z] 08:18:07     INFO -      #15 0x7f26be1bece9 in mozilla::RunGTestFunc(int*, char**) /builds/worker/workspace/build/src/testing/gtest/mozilla/GTestRunner.cpp:117
[task 2017-11-07T08:18:07.462Z] 08:18:07     INFO -      #16 0x7f26bd159dcd in XREMain::XRE_mainStartup(bool*) /builds/worker/workspace/build/src/toolkit/xre/nsAppRunner.cpp:3879:16
[task 2017-11-07T08:18:07.462Z] 08:18:07     INFO -      #17 0x7f26bd168702 in XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/workspace/build/src/toolkit/xre/nsAppRunner.cpp:4822:12
[task 2017-11-07T08:18:07.462Z] 08:18:07     INFO -      #18 0x7f26bd169f35 in XRE_main(int, char**, mozilla::BootstrapConfig const&) /builds/worker/workspace/build/src/toolkit/xre/nsAppRunner.cpp:4932:21
[task 2017-11-07T08:18:07.478Z] 08:18:07     INFO -      #19 0x4ed92b in do_main /builds/worker/workspace/build/src/browser/app/nsBrowserApp.cpp:231:22
[task 2017-11-07T08:18:07.479Z] 08:18:07     INFO -      #20 0x4ed92b in main /builds/worker/workspace/build/src/browser/app/nsBrowserApp.cpp:304
[task 2017-11-07T08:18:07.515Z] 08:18:07     INFO -      #21 0x7f26d278c82f in __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:291
[task 2017-11-07T08:18:07.515Z] 08:18:07     INFO -      #22 0x41e528 in _start (/builds/worker/workspace/build/application/firefox/firefox+0x41e528)
[task 2017-11-07T08:18:07.516Z] 08:18:07     INFO -  Address 0x7ffca38c28b0 is located in stack of thread T0 at offset 112 in frame
[task 2017-11-07T08:18:07.516Z] 08:18:07     INFO -      #0 0x7f26bd8cb16f in TestTArray::TArray_CopyOverlappingForwards_Test::TestBody() /builds/worker/workspace/build/src/xpcom/tests/gtest/TestTArray.cpp:146
[task 2017-11-07T08:18:07.518Z] 08:18:07     INFO -    This frame has 12 object(s):
[task 2017-11-07T08:18:07.519Z] 08:18:07     INFO -      [32, 33) 'ref.tmp.i.i.i.i87'
[task 2017-11-07T08:18:07.520Z] 08:18:07     INFO -      [48, 49) 'ref.tmp.i.i.i.i'
[task 2017-11-07T08:18:07.520Z] 08:18:07     INFO -      [64, 72) 'array' (line 147)
[task 2017-11-07T08:18:07.520Z] 08:18:07     INFO -      [96, 160) 'destructionCounters' (line 152) <== Memory access at offset 112 is inside this variable
[task 2017-11-07T08:18:07.520Z] 08:18:07     INFO -      [192, 208) 'gtest_ar' (line 164)
[task 2017-11-07T08:18:07.521Z] 08:18:07     INFO -      [224, 228) 'ref.tmp' (line 164)
[task 2017-11-07T08:18:07.521Z] 08:18:07     INFO -      [240, 248) 'ref.tmp16' (line 164)
[task 2017-11-07T08:18:07.521Z] 08:18:07     INFO -      [272, 280) 'temp.lvalue'
[task 2017-11-07T08:18:07.522Z] 08:18:07     INFO -      [304, 320) 'gtest_ar23' (line 167)
[task 2017-11-07T08:18:07.522Z] 08:18:07     INFO -      [336, 340) 'ref.tmp26' (line 167)
[task 2017-11-07T08:18:07.522Z] 08:18:07     INFO -      [352, 360) 'ref.tmp28' (line 167)
[task 2017-11-07T08:18:07.523Z] 08:18:07     INFO -      [384, 392) 'temp.lvalue29'
[task 2017-11-07T08:18:07.523Z] 08:18:07     INFO -  HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext
[task 2017-11-07T08:18:07.524Z] 08:18:07     INFO -        (longjmp and C++ exceptions *are* supported)
[task 2017-11-07T08:18:07.524Z] 08:18:07     INFO -  SUMMARY: AddressSanitizer: stack-use-after-scope /builds/worker/workspace/build/src/xpcom/tests/gtest/TestTArray.cpp:44:29 in ~Movable
[task 2017-11-07T08:18:07.524Z] 08:18:07     INFO -  Shadow bytes around the buggy address:
[task 2017-11-07T08:18:07.524Z] 08:18:07     INFO -    0x1000147104c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[task 2017-11-07T08:18:07.524Z] 08:18:07     INFO -    0x1000147104d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[task 2017-11-07T08:18:07.525Z] 08:18:07     INFO -    0x1000147104e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[task 2017-11-07T08:18:07.525Z] 08:18:07     INFO -    0x1000147104f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[task 2017-11-07T08:18:07.526Z] 08:18:07     INFO -    0x100014710500: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 f8 f2 f8 f2
[task 2017-11-07T08:18:07.526Z] 08:18:07     INFO -  =>0x100014710510: 00 f2 f2 f2 f8 f8[f8]f8 f8 f8 f8 f8 f2 f2 f2 f2
[task 2017-11-07T08:18:07.526Z] 08:18:07     INFO -    0x100014710520: f8 f8 f2 f2 f8 f2 f8 f2 f2 f2 00 f2 f2 f2 f8 f8
[task 2017-11-07T08:18:07.527Z] 08:18:07     INFO -    0x100014710530: f2 f2 f8 f2 f8 f2 f2 f2 00 f3 f3 f3 00 00 00 00
[task 2017-11-07T08:18:07.527Z] 08:18:07     INFO -    0x100014710540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[task 2017-11-07T08:18:07.528Z] 08:18:07     INFO -    0x100014710550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[task 2017-11-07T08:18:07.528Z] 08:18:07     INFO -    0x100014710560: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 f8 f8 f2 f2
[task 2017-11-07T08:18:07.529Z] 08:18:07     INFO -  Shadow byte legend (one shadow byte represents 8 application bytes):
[task 2017-11-07T08:18:07.529Z] 08:18:07     INFO -    Addressable:           00
[task 2017-11-07T08:18:07.529Z] 08:18:07     INFO -    Partially addressable: 01 02 03 04 05 06 07
[task 2017-11-07T08:18:07.530Z] 08:18:07     INFO -    Heap left redzone:       fa
[task 2017-11-07T08:18:07.530Z] 08:18:07     INFO -    Freed heap region:       fd
[task 2017-11-07T08:18:07.530Z] 08:18:07     INFO -    Stack left redzone:      f1
[task 2017-11-07T08:18:07.531Z] 08:18:07     INFO -    Stack mid redzone:       f2
[task 2017-11-07T08:18:07.531Z] 08:18:07     INFO -    Stack right redzone:     f3
[task 2017-11-07T08:18:07.532Z] 08:18:07     INFO -    Stack after return:      f5
[task 2017-11-07T08:18:07.532Z] 08:18:07     INFO -    Stack use after scope:   f8
[task 2017-11-07T08:18:07.532Z] 08:18:07     INFO -    Global redzone:          f9
[task 2017-11-07T08:18:07.533Z] 08:18:07     INFO -    Global init order:       f6
[task 2017-11-07T08:18:07.533Z] 08:18:07     INFO -    Poisoned by user:        f7
[task 2017-11-07T08:18:07.534Z] 08:18:07     INFO -    Container overflow:      fc
[task 2017-11-07T08:18:07.534Z] 08:18:07     INFO -    Array cookie:            ac
[task 2017-11-07T08:18:07.534Z] 08:18:07     INFO -    Intra object redzone:    bb
[task 2017-11-07T08:18:07.535Z] 08:18:07     INFO -    ASan internal:           fe
[task 2017-11-07T08:18:07.535Z] 08:18:07     INFO -    Left alloca redzone:     ca
[task 2017-11-07T08:18:07.535Z] 08:18:07     INFO -    Right alloca redzone:    cb
[task 2017-11-07T08:18:07.536Z] 08:18:07     INFO -  ==965==ABORTING
I think it can be fixed by simply rearranging the declaration of the objects.
Assignee: nobody → jacheng
Attachment #8925841 - Flags: review?(nfroyd)
Can you do a try push for a linux64-asan gtest with the patches from bug 1409267 and the taskcluster/ci/toolchain/linux.yml part of bug 1409265?
Sure,

https://treeherder.mozilla.org/#/jobs?repo=try&revision=ee8d47ec6d099f9c2834d93a92a8ffdf35253d53

I applied the patches from bug 1409267 and bug 1409265 with try syntax only selecting gtest.

try: -b do -p linux64-asan -u gtest -t none

Hope it is what you want!

Thanks.
Try looks fixed.
Unfortunately, you took the full patch for bug 1409265, not just the taskcluster/ci/toolchain/linux.yml part. The full patch doesn't make asan builds use clang 5.
Oops, I redo it again. thanks
Seems like the patch works in try
No longer blocks: 1409267
Depends on: 1409267
Comment on attachment 8925841 [details]
Bug 1415083 - Rearrange the declaration of objects to avoid stack-use-after-scope.

https://reviewboard.mozilla.org/r/197042/#review202294

Thank you!
Attachment #8925841 - Flags: review?(nfroyd) → review+
Pushed by jacheng@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/1528ff0ed838
Rearrange the declaration of objects to avoid stack-use-after-scope. r=froydnj
https://hg.mozilla.org/mozilla-central/rev/1528ff0ed838
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla58
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: