forked from Echelon9/valgrind
-
Notifications
You must be signed in to change notification settings - Fork 18
Open
Description
I am analyzing the following script:
#include <iostream>
#include <vector>
struct Node{
int value;
Node *left = nullptr;
Node *right = nullptr;
};
std::vector<Node*> createListNodes(int min, int max)
{
// odered vector with i.e. {0,1,2,3,4}
Node *node = new Node;
if (min == max-1)
{
node->value = min;
return std::vector<Node*> {std::move(node)};
}
else if (min == max)
{
return std::vector<Node*> {};
}
std::vector<Node*> alterantive{};
for (int i=min; i<max; i++)
{
auto left = createListNodes(min,i); // for the left side
auto right = createListNodes(i+1,max); // for the left side
for (auto elem_left : left)
{
for (auto elem_right : right)
{
Node *node = new Node;
node->value = i;
node->left = elem_left;
node->right = elem_right;
alterantive.emplace_back(std::move(node));
}
}
}
return alterantive;
}
int main()
{
int N = 4, init=0;
std::vector<Node*> combinations = createListNodes(init, N);
int t= 4;
}
With the instruction:
valgrind --leak-check=full --track-origins=yes build/Challenges/DailyCoding_run
And returns :
MacBook-Pro-de-Hector-2:DailyCoding hectoresteban$ valgrind --leak-check=full --track-origins=yes build/Challenges/DailyCoding_run
==18538== Memcheck, a memory error detector
==18538== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==18538== Using Valgrind-3.16.0.GIT and LibVEX; rerun with -h for copyright info
==18538== Command: build/Challenges/DailyCoding_run
==18538==
--18538-- UNKNOWN fcntl 101!
--18538-- UNKNOWN fcntl 101! (repeated 2 times)
--18538-- UNKNOWN fcntl 101! (repeated 4 times)
--18538-- UNKNOWN fcntl 101! (repeated 8 times)
--18538-- UNKNOWN fcntl 101! (repeated 16 times)
--18538-- UNKNOWN fcntl 101! (repeated 32 times)
==18538== valgrind: Unrecognised instruction at address 0x1006fba73.
==18538== at 0x1006FBA73: __pthread_init.cold.2 (in /usr/lib/system/libsystem_pthread.dylib)
==18538== by 0x1001D072D: libSystem_initializer (in /usr/lib/libSystem.B.dylib)
==18538== by 0x1000291E2: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==18538== by 0x1000295ED: ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==18538== by 0x10002400A: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in /usr/lib/dyld)
==18538== by 0x100023F75: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in /usr/lib/dyld)
==18538== by 0x100022013: ImageLoader::processInitializers(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in /usr/lib/dyld)
==18538== by 0x1000220B3: ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) (in /usr/lib/dyld)
==18538== by 0x10001059F: dyld::initializeMainExecutable() (in /usr/lib/dyld)
==18538== by 0x100015AF7: dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) (in /usr/lib/dyld)
==18538== by 0x10000F226: dyldbootstrap::start(dyld3::MachOLoaded const*, int, char const**, dyld3::MachOLoaded const*, unsigned long*) (in /usr/lib/dyld)
==18538== by 0x10000F024: _dyld_start (in /usr/lib/dyld)
==18538== Your program just tried to execute an instruction that Valgrind
==18538== did not recognise. There are two possible reasons for this.
==18538== 1. Your program has a bug and erroneously jumped to a non-code
==18538== location. If you are running Memcheck and you just saw a
==18538== warning about a bad jump, it's probably your program's fault.
==18538== 2. The instruction is legitimate but Valgrind doesn't handle it,
==18538== i.e. it's Valgrind's fault. If you think this is the case or
==18538== you are not sure, please let us know and we'll try to fix it.
==18538== Either way, Valgrind will now raise a SIGILL signal which will
==18538== probably kill your program.
==18538==
==18538== Process terminating with default action of signal 4 (SIGILL)
==18538== Illegal opcode at address 0x1006FBA73
==18538== at 0x1006FBA73: __pthread_init.cold.2 (in /usr/lib/system/libsystem_pthread.dylib)
==18538== by 0x1001D072D: libSystem_initializer (in /usr/lib/libSystem.B.dylib)
==18538== by 0x1000291E2: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==18538== by 0x1000295ED: ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==18538== by 0x10002400A: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in /usr/lib/dyld)
==18538== by 0x100023F75: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in /usr/lib/dyld)
==18538== by 0x100022013: ImageLoader::processInitializers(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in /usr/lib/dyld)
==18538== by 0x1000220B3: ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) (in /usr/lib/dyld)
==18538== by 0x10001059F: dyld::initializeMainExecutable() (in /usr/lib/dyld)
==18538== by 0x100015AF7: dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) (in /usr/lib/dyld)
==18538== by 0x10000F226: dyldbootstrap::start(dyld3::MachOLoaded const*, int, char const**, dyld3::MachOLoaded const*, unsigned long*) (in /usr/lib/dyld)
==18538== by 0x10000F024: _dyld_start (in /usr/lib/dyld)
==18538==
==18538== HEAP SUMMARY:
==18538== in use at exit: 0 bytes in 0 blocks
==18538== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==18538==
==18538== All heap blocks were freed -- no leaks are possible
==18538==
==18538== For lists of detected and suppressed errors, rerun with: -s
==18538== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 1 from 1)
Illegal instruction: 4
Metadata
Metadata
Assignees
Labels
No labels