awslabs / awslabs/aws-lambda-cpp

aws lambda c++ runtime seg fault (but works locally)

Aperta
#108 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
465
Fork
98
Merge medio
12h 47m
PR unite (30g)
3

Descrizione

I am trying to get a simple example running on aws c++ runtime, but it keeps seg faulting when I invoke the lambda function. To start with, the example shown in: https://aws.amazon.com/blogs/compute/introducing-the-c-lambda-runtime/ works fine. So, now, I fetch something from a bucket like so:

```
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include // One-stop header.
#include
#include
#include
#include

using namespace torch::indexing;
using namespace Aws::Utils;
using namespace aws::lambda_runtime;

char const TAG[] = "LAMBDA_ALLOC";

static invocation_response my_handler(invocation_request const &req)
{
if (req.payload.length() > 42)
{
return invocation_response::failure("error message here" /*error_message*/,
"error type here" /*error_type*/);
}

Aws::SDKOptions options;
Aws::InitAPI(options);

const Aws::String bucket_name("buckname");
const Aws::String object_name("fname");

Aws::S3::S3Client s3_client;
Aws::S3::Model::GetObjectRequest object_request;
object_request.SetBucket(bucket_name);
object_request.SetKey(object_name);
Aws::S3::Model::GetObjectOutcome get_object_outcome =

s3_client.GetObject(object_request);
auto &retrieved_file = get_object_outcome.GetResultWithOwnership().GetBody();
rapidcsv::Document doc(retrieved_file, rapidcsv::LabelParams(-1, -1)); /// this is where the problem is.

const Aws::String objectKey2("traced_pointnet_model.tar");
Aws::S3::S3Client s3_client2;
Aws::S3::Model::GetObjectRequest object_request2;
object_request2.SetBucket(bucket_name);
object_request2.SetKey(objectKey2);
Aws::S3::Model::GetObjectOutcome get_object_outcome2 =
s3_client2.GetObject(object_request2);
auto &retrieved_file2 = get_object_outcome2.GetResultWithOwnership().GetBody();

torch::jit::script::Module module;
module = torch::jit::load(retrieved_file2); /// this is also where the problem is.
std::cout << "Model Load ok\n";

Aws::ShutdownAPI(options);

return invocation_response::success(tensor_string /*payload*/,
"application/json" /*MIME type*/);
}

int main()
{

run_handler(my_handler);
return 0;
}

```
the thing is, it compiles and works as expected when I run it locally (debian, cmake), but when I compile it for aws runtime, I get the seg fault.

I have narrowed down the problem to two lines:

` rapidcsv::Document doc(retrieved_file, rapidcsv::LabelParams(-1, -1)); /// this is where the problem is.
`
and also,

` module = torch::jit::load(retrieved_file2); /// this is also where the problem is.
`
I use the rapidcsv header only lib from here: https://github.com/d99kris/rapidcsv and as I said, it works fine locally.

I suspect somehow the runtime is not able to find rapidcsv (but that still fails to explain why it seg faults on `module = torch::jit::load(retrieved_file2);` :(

Any pointers would be great!

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.