Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-49175

Evaluator crash

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 7.1.0
    • 7.1.0
    • js-evaluator
    • None
    • Untriaged
    • 1
    • Unknown

    Description

      While fixing jsevaluator test following the changes from MB-42809, I have run into crashes:

      go test -run TestEvaluatorWorkloadMultiFunctionsSmallDoc
      ============= Test case start: TestEvaluatorWorkloadMultiFunctionsSmallDoc =============
       signal: segmentation fault
       FAIL github.com/couchbase/goxdcr/tests/evaluator 0.693s
      go test -run TestEvaluatorWorkloadMultiFunctionsLargeDocs -test.timeout 30m
      ============= Test case start: TestEvaluatorWorkloadMultiFunctionsLargeDocs =============
       evaluator.test(20510,0x70000bdf3000) malloc: *** error for object 0x95ade16ce9: pointer being freed was not allocated
       evaluator.test(20510,0x70000bdf3000) malloc: *** set a breakpoint in malloc_error_break to debug
       signal: abort trap
       FAIL github.com/couchbase/goxdcr/tests/evaluator 53.933s
      

       By attaching lldb to the test:

       

      go test -run TestEvaluatorWorkloadMultiFunctionsLargeDocs -test.timeout 30m
      

      I was able to catch the crash:

       

      (lldb) cont
      Process 20800 resuming
      Process 20800 stopped
      * thread #37, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
          frame #0: 0x00000000058fbdd4 libv8.dylib`v8::internal::HeapObject::SizeFromMap(v8::internal::Map) const + 4
      libv8.dylib`v8::internal::HeapObject::SizeFromMap:
      ->  0x58fbdd4 <+4>:  movb   0x7(%rsi), %al
          0x58fbdd7 <+7>:  testb  %al, %al
          0x58fbdd9 <+9>:  je     0x58fbde3                 ; <+19>
          0x58fbddb <+11>: movzbl %al, %eax
      Target 0: (evaluator.test) stopped
      

       

      * thread #37, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
        * frame #0: 0x00000000058fbdd4 libv8.dylib`v8::internal::HeapObject::SizeFromMap(v8::internal::Map) const + 4
          frame #1: 0x00000000056f158f libv8.dylib`unsigned long v8::internal::MarkCompactCollector::ProcessMarkingWorklist<(v8::internal::MarkCompactCollector::MarkingWorklistProcessingMode)0>(unsigned long) + 17615
          frame #2: 0x00000000056fc409 libv8.dylib`v8::internal::MarkCompactCollector::MarkLiveObjects() + 15
          frame #3: 0x00000000056fbcff libv8.dylib`v8::internal::MarkCompactCollector::CollectGarbage() + 127
          frame #4: 0x00000000056d2aaf libv8.dylib`v8::internal::Heap::MarkCompact() + 431
          frame #5: 0x00000000056cfb57 libv8.dylib`v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) + 1319
          frame #6: 0x00000000056cdb68 libv8.dylib`v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) + 1240
          frame #7: 0x00000000056ce0be libv8.dylib`v8::internal::Heap::CollectAllAvailableGarbage(v8::internal::GarbageCollectionReason) + 174
          frame #8: 0x000000000555f09d libv8.dylib`v8::Isolate::LowMemoryNotification() + 317
          frame #9: 0x000000000532daa2 libjseval.dylib`check_gc(Worker*) at worker.cc:420:22 [opt]
          frame #10: 0x000000000532d9b0 libjseval.dylib`check_gc(worker=0x0000000007640c50) at worker.cc:444 [opt]
          frame #11: 0x000000000532eeec libjseval.dylib`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(Worker*), Worker*> >(void*) [inlined] decltype(__f=<unavailable>, __args=<unavailable>)(Worker*)>(fp)(std::__1::forward<Worker*>(fp0))) std::__1::__invoke<void (*)(Worker*), Worker*>(void (*&&)(Worker*), Worker*&&) at type_traits:3747:1 [opt]
          frame #12: 0x000000000532eee8 libjseval.dylib`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(Worker*), Worker*> >(void*) [inlined] void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(Worker*), Worker*, 2ul>(__t=<unavailable>)(Worker*), Worker*>&, std::__1::__tuple_indices<2ul>) at thread:280 [opt]
          frame #13: 0x000000000532eee8 libjseval.dylib`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(Worker*), Worker*> >(__vp=0x0000000007760cd0) at thread:291 [opt]
          frame #14: 0x00007fff205278fc libsystem_pthread.dylib`_pthread_start + 224
          frame #15: 0x00007fff20523443 libsystem_pthread.dylib`thread_start + 1
      

       

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            lilei.chen Lilei Chen (Inactive)
            lilei.chen Lilei Chen (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes

                PagerDuty