Skip to content

Conversation

@FabrizioSandri
Copy link
Owner

@FabrizioSandri FabrizioSandri commented Aug 3, 2022

As previously mentioned, I'm going to combine the current GitHub Action with Docker Hub via this pull request. What I am expecting by this change is a great improvement in terms of the action's execution time. The need to rebuild the Docker environment each time motivates this change.

More details about this change can be found in the dedicated blog post.

@FabrizioSandri
Copy link
Owner Author

The Docker image was successfully build and uploaded to Docker Hub; the image can be found at this link. I've configured a workflow to build and push the docker image only if something changes in the /docker folder after a push.

Now I am going to re-enable the workflow that runs RcppDeepState on testSAN to see if the execution time has been reduced.

@github-actions
Copy link

github-actions bot commented Aug 3, 2022

RcppDeepState Report

function_name message file_line address_trace R_code
rcpp_read_out_of_bound Invalid read of size 4 read_out_of_bound.cpp:7 No Address Trace found
Test code
testlist <- list(rbound = 85511867L)
result <- do.call(testSAN::rcpp_read_out_of_bound, testlist)
rcpp_use_after_deallocate Invalid read of size 1 use_after_deallocate.cpp:8 use_after_deallocate.cpp:6
Test code
testlist <- list(array_size = 1792171317L)
result <- do.call(testSAN::rcpp_use_after_deallocate, testlist)
rcpp_use_after_free Argument 'size' of function malloc has a fishy (possibly negative) value: -4325911308 use_after_free.cpp:6 No Address Trace found
Test code
testlist <- list(alloc_size = -1081477827L)
result <- do.call(testSAN::rcpp_use_after_free, testlist)
rcpp_write_index_outofbound Invalid write of size 4 write_index_outofbound.cpp:8 No Address Trace found
Test code
testlist <- list(wbound = 1750289780L)
result <- do.call(testSAN::rcpp_write_index_outofbound, testlist)
rcpp_zero_sized_array Invalid write of size 4 zero_sized_array.cpp:8 zero_sized_array.cpp:7
Test code
testlist <- list(value = -1938632515L)
result <- do.call(testSAN::rcpp_zero_sized_array, testlist)

Analyzed functions summary

function_name tested_inputs
rcpp_read_out_of_bound 3
rcpp_use_after_deallocate 3
rcpp_use_after_free 3
rcpp_use_uninitialized 3
rcpp_write_index_outofbound 3
rcpp_zero_sized_array 3

@FabrizioSandri
Copy link
Owner Author

The overall time required to run the action has been reduced from an average of 20-30 minutes to 10 minutes as a result of this adjustment. I believe that this time can be improved by including only the files required for artifact upload in the zip file; that is removing all the inputs not being analyzed by RcppDeepState.

@FabrizioSandri
Copy link
Owner Author

Further improvements have been made in the last three commits with respect to the find command:

  • when this is command is used to find and then remove vgcore files produces by valgrind, the -maxdepth 2 option has been specified to avoid the command looking inside inputs directories with a large number of files(slow operation);
  • when the command is used to find and update the permissions of all the files before uploading the artifact files

To demonstrate the improvement, I manually ran RcppDeepState on testSAN three times, and the results show that the workflow took between 7 and 8 minutes on average.

@FabrizioSandri
Copy link
Owner Author

I consider this pull request completed: I have successfully integrated the action with Docker Hub.

The action has been tested and its performance has been evaluated: the result is a great improvements in terms of action's execution time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants