G06F11/3624

NON-TRANSITORY COMPUTER-READABLE STORAGE MEDIUM FOR STORING INFORMATION PROCESSING PROGRAM, INFORMATION PROCESSING METHOD, AND INFORMATION PROCESSING APPARATUS

A storage medium storing a program for causing a computer to perform processing including: performing a morphological analysis on a source code to divide the source code into a plurality of reserved words and a plurality of variables; performing, based on a static dictionary defining a relationship between a reserved word and a static code, assigning of the static code corresponding to the reserved word to the reserved word and assigning of a dynamic code to the variable, to thereby generate a compressed code array; registering the variable, the dynamic code assigned to the variable, and an attribute of the variable; calculating a vector of the source code by assigning a predetermined vector to the static code in the array and assigning a vector to the dynamic code in the array by embedding the dynamic code in a vector space based on the attribute corresponding to the dynamic code.

Self-debugging

In overview, methods, computer programs products and devices for securing software are provided. In accordance with the disclosure, a method may comprise attaching a debugger process to a software process. During execution of the software process, operations relevant to the functionality of the code process are carried out within the debugger process. As a result, the debugger process cannot be replaced or subverted without impinging on the functionality of the software process. The software process can therefore be protected from inspection by modified or malicious debugging techniques.

Device profiling in GPU accelerators by using host-device coordination

System and method of compiling a program having a mixture of host code and device code to enable Profile Guided Optimization (PGO) for device code execution. An exemplary integrated compiler can compile source code programmed to be executed by a host processor (e.g., CPU) and a co-processor (e.g., a GPU) concurrently. The compilation can generate an instrumented executable code which includes: profile instrumentation counters for the device functions; and instructions for the host processor to allocate and initialize device memory for the counters and to retrieve collected profile information from the device memory to generate instrumentation output. The output is fed back to the compiler for compiling the source code a second time to generate optimized executable code for the device functions defined in the source code.

Computing system and method for automated program error repair

This application relates to a computing system and method for an automated program error repair. In one aspect, the computing system includes a storage, a preprocessing processor, and an automated error repair processor. The storage stores a program code. The preprocessing processor acquires the program code from the storage and preprocesses the program code. Preprocessing includes tokenizing the program code with tokens, converting the tokens into vectors, and adding location information for the tokens. The automated error repair processor receives the preprocessed program code as an input from the preprocessing processor, detects an error in the preprocessed program code, corrects the detected error, and outputs the error-corrected program code. Detecting and correcting the error are performed based on a deep learning result and the location information for the tokens.

Data race detection with per-thread memory protection

Data race detection in multi-threaded programs can be achieved by leveraging per-thread memory protection technology in conjunction with a custom dynamic memory allocator to protect shared memory objects with unique memory protection keys, allowing data races to be turned into inter-thread memory access violations. Threads may acquire or release the keys used for accessing protected memory objects at the entry and exit points of critical sections within the program. An attempt by a thread to access a protected memory object within a critical section without the associated key triggers a protection fault, which may be indicative of a data race.

Automated identification of posts related to software patches
11556455 · 2023-01-17 · ·

Operations may include obtaining a buggy code snippet of source code of a software program in which the buggy code snippet includes a particular error. The operations may also include determining a respective first similarity between the buggy code snippet and a plurality of bug patterns of previously identified bug scenarios. In addition, the operations may include selecting a particular bug pattern based on a determined particular first similarity between the particular bug pattern and the buggy code snippet. Moreover, the operations may include determining a respective second similarity between the particular bug pattern and example code snippets obtained from a plurality of posts. The operations may also include selecting a particular post as providing a potential solution to correct the particular error based on a determined particular second similarity between the particular bug pattern and a particular example code snippet of the particular post.

SYSTEMS AND METHODS FOR SELECTIVE PATH SENSITIVE INTERVAL ANALYSIS

Abstract interpretation based static analysis tools use relational/non-relational abstract domains to verify program properties. Precision and scalability of analysis vary basis usage of abstract domains. K-limited path-sensitive interval domain is an abstract domain that was conventionally proposed for analysis on industry strength programs. The domain maintains variables' intervals along a configurable K subsets of paths at each program point, which implicitly provides co-relation among variables. When the number of paths at the join point exceeds K, set of paths are partitioned into K subsets, arbitrarily, which results in loss of precision required to verify program properties. To address the above problem, embodiments of the present disclosure provide selective merging of paths in such a way that the intervals computed help verifying more properties. The selective path-sensitive method of the present disclosure is based on the knowledge of variables whose values influence the verification outcome of program properties.

Automatic generation of source code implementing a regular expression

The present application discloses methods, systems, and computer program products for automatically generating source code implementing a regular expression. A regular expression that is defined within source code of an application project is identified. The source code uses a higher-level programming language. Based on identifying the regular expression, a source code implementation of the regular expression is automatically generated using the higher-level programming language, and the source code implementation of the regular expression is integrated into the application project. After integrating the source code implementation of the regular expression into the application project, the source code implementation of the regular expression is compiled into lower-level code and the lower-level code is emitted into an application executable when building the application project, or the source code implementation of the regular expression is interpreted when executing the application project.

IDENTIFICATION OF DIAGNOSTIC MESSAGES CORRESPONDING TO EXCEPTIONS
20230028560 · 2023-01-26 ·

Example techniques for identification of diagnostic messages corresponding to exceptions are described. A determination model may determine whether a set of diagnostic messages generated based on analysis of a source code includes a diagnostic message that likely corresponds to an exception. The determination may be used to identify a set of diagnostic messages including the diagnostic message that likely corresponds to an exception.

IDENTIFYING REGRESSION TEST FAILURES

Examples described herein provide a computer-implemented method for identifying regression test failures that includes comparing a base code to a new code to locate an updated aspect of a program. The method further includes inserting debug code into corresponding source files for each of the base code and the new code for the updated aspect. The method further includes building a first image for the base code and a second image for the new code, the first and second images running in respective first and second containers. The method further includes comparing debugging outputs from a regression test of the respective first and second containers to identify a regression test failure. The method further includes implementing a corrective action to correct the regression test failure.