8000 ESBMC 7.4 crashes during unwinding · Issue #1600 · esbmc/esbmc · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
ESBMC 7.4 crashes during unwinding #1600
Closed
@tihanyin

Description

@tihanyin

In ESBMC 7.4 we have a crash during loop unwinding: ./esbmc --unwind 1 ../DATASET/FormAI_26112.c

OUTPUT:

Not unwinding loop 12 iteration 1   file string.c line 30 column 3 function strcpy
Not unwinding loop 12 iteration 1   file string.c line 30 column 3 function strcpy
Segmentation fault (core dumped)

Program:

//FormAI DATASET v1.0 Category: Music Library Management System ; Style: Ken Thompson
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_ALBUMS 100
#define MAX_SONGS 1000

struct Song {
    char name[50];
    char artist[50];
    int duration;
};

struct Album {
    char name[50];
    char artist[50];
    int year;
    struct Song songs[MAX_SONGS];
    int num_songs;
};

struct Library {
    struct Album albums[MAX_ALBUMS];
    int num_albums;
};

void add_album(struct Library *library, char *name, char *artist, int year) {
    int num_albums = library->num_albums;
    if (num_albums < MAX_ALBUMS) {
        struct Album *album = &library->albums[num_albums];
        strcpy(album->name, name);
        strcpy(album->artist, artist);
        album->year = year;
        album->num_songs = 0;
        library->num_albums++;
    }
}

void add_song(struct Library *library, char *album_name, char *song_name, char *artist_name, int duration) {
    struct Album *album = NULL;
    for (int i = 0; i < library->num_albums; i++) {
        if (strcmp(library->albums[i].name, album_name) == 0) {
            album = &library->albums[i];
            break;
        }
    }
    if (album != NULL) {
        struct Song *song = &album->songs[album->num_songs];
        strcpy(song->name, song_name);
        strcpy(song->artist, artist_name);
        song->duration = duration;
        album->num_songs++;
    }
}

void print_library(struct Library *library) {
    for (int i = 0; i < library->num_albums; i++) {
        struct Album album = library->albums[i];
        printf("%s - %s (%d):\n", album.artist, album.name, album.year);
        for (int j = 0; j < album.num_songs; j++) {
            struct Song song = album.songs[j];
            printf("\t%s - %s (%d:%d)\n", song.artist, song.name, song.duration / 60, song.duration % 60);
        }
        printf("\n");
    }
}

int main() {
    struct Library library;
    library.num_albums = 0;
    add_album(&library, "The Dark Side of the Moon", "Pink Floyd", 1973);
    add_album(&library, "Led Zeppelin IV", "Led Zeppelin", 1971);
    add_album(&library, "Rumours", "Fleetwood Mac", 1977);
    add_song(&library, "The Dark Side of the Moon", "Speak to Me", "Pink Floyd", 67);
    add_song(&library, "The Dark Side of the Moon", "Breathe", "Pink Floyd", 163);
    add_song(&library, "Led Zeppelin IV", "Stairway to Heaven", "Led Zeppelin", 482);
    add_song(&library, "Rumours", "Go Your Own Way", "Fleetwood Mac", 219);
    print_library(&library);
    return 0;
}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    0