Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-619

purify reports array bounds read error in 25.remove test

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 4.2.0
    • Fix Version/s: 4.2.1
    • Component/s: Tests
    • Labels:
      None
    • Patch Info:
      Patch Available
    • Severity:
      Incorrect Behavior

      Description

      An rw_assert indexes past the end of an array if the preceeding for loop does not experience a failure.

            • Purify instrumented ./25.remove (pid 19671) ****
              ABR: Array bounds read:
      • This is occurring while in thread 19671:
        test_remove<FwdIter<UserClass>, UserClass, EqualityPredicate<UserClass> >(int, char const*, char, unsigned, FwdIter<UserClass>, NoIterator, UserClass const*, UserClass const*, RemoveTag) [25.remove.cpp:213]
        test_remove<FwdIter<UserClass>, NoIterator, UserClass, EqualityPredicate<UserClass>, RemoveTag >(FwdIter<UserClass>, UserClass, NoIterator const*, UserClass const*, EqualityPredicate<UserClass>) [25.remove.cpp:384]
        test_remove<UserClass, EqualityPredicate<UserClass>, RemoveTag >(UserClass const*, EqualityPredicate<UserClass> const*, UserClass) [25.remove.cpp:440]
        test_remove<UserClass>(UserClass const*) [25.remove.cpp:471]
        run_test(int, char**) [25.remove.cpp:590]
        unknown func [pc=0x81201a8]
      • Reading 4 bytes from 0x81b88f8 in the heap.
      • Address 0x81b88f8 is 5 bytes past end of a malloc'd block at 0x81b88c0 of 52 bytes.
      • This block was allocated from thread -1207973632:
        malloc [rtlib.o]
        operator new(unsigned) [libstd15d.so]
        operator new [](unsigned) [libstd15d.so]
        UserClass* __rw_from_char<UserClass>(UserClass*, char const*, unsigned, bool) [value.cpp:485]
        UserClass::from_char(char const*, unsigned, bool) [value.cpp:533]
        test_remove<FwdIter<UserClass>, UserClass, EqualityPredicate<UserClass> >(int, char const*, char, unsigned, FwdIter<UserClass>, NoIterator, UserClass const*, UserClass const*, RemoveTag) [25.remove.cpp:153]

        Attachments

        1. stdcxx-619.patch
          2 kB
          Travis Vitek

          Activity

            People

            • Assignee:
              vitek Travis Vitek
              Reporter:
              vitek Travis Vitek
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: