Skip to content

Sometimes the stacktrace is worse than the one gdb returns #2

@PerfectCarl

Description

@PerfectCarl

It is because nm returns the last line of functions that points to C file instead of vala.

For example:

void noise_library_remove_medias (NoiseLibrary* self, GeeCollection* toRemove, gboolean trash) {
#line 59 "/home/cran/Documents/Projects/elementary/noise/instant-beta/core/Library.vala"
    g_return_if_fail (self != NULL);
#line 59 "/home/cran/Documents/Projects/elementary/noise/instant-beta/core/Library.vala"
    NOISE_LIBRARY_GET_CLASS (self)->remove_medias (self, toRemove, trash);
#line 262 "Library.c"
}

The line 262 appears in the vala-stacktrace:

An error occured (SIGTRAP) in ../core/Media.vala, line 36 in 'noise_media_is_equal'
   The reason is likely an uncaught error.

 *  #1  ../core/Media.vala                                 line   36 in 'noise_media_is_equal'               
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/core/Media.vala:36
    #2  ../src/CoreServicesImplementation.vala             line  146 in 'noise_core_services_implementation_real_stop_playback_for_medias'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/CoreServicesImplementation.vala:146
    #3  core/CoreServices.c                                line  473 in 'noise_core_services_stop_playback_for_medias'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/build/core/CoreServices.c:473
    #4  ../plugins/SqliteLibrary/DataBase/MediaDao.vala    line  260 in 'noise_media_dao_get_media'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/plugins/SqliteLibrary/DataBase/MediaDao.vala:260
    #5  core/Library.c                                     line  262 in 'noise_library_remove_medias'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/build/core/Library.c:262
    #6  src/MusicListView.c                                line 3469 in '___lambda87_'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/build/src/MusicListView.c:3469
    #7  src/MusicListView.c                                line 3476 in '____lambda87__noise_remove_files_dialog_remove_media'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/build/src/MusicListView.c:3476
    #8  ../src/Dialogs/RemoveFilesDialog.vala              line  118 in '__lambda85_'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/Dialogs/RemoveFilesDialog.vala:118
    #9  src/RemoveFilesDialog.c                            line  164 in '___lambda85__gtk_button_clicked'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/build/src/RemoveFilesDialog.c:164
    #10  ../src/main.vala                                   line   43 in '_vala_main'
        at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/main.vala:43
    #11  src/main.c                                         line  196 in 'main'

gdb is smarter and returns the following stacktrace:

Program received signal SIGTRAP, Trace/breakpoint trap.
g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffffffbe48)
    at /build/buildd/glib2.0-2.42.1/./glib/gmessages.c:1046
1046    /build/buildd/glib2.0-2.42.1/./glib/gmessages.c: No such file or directory.
(gdb) bt
#0  g_logv (log_domain=0x0, log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffffffbe48)
    at /build/buildd/glib2.0-2.42.1/./glib/gmessages.c:1046
#1  0x00007ffff5581b32 in g_log (log_domain=<optimized out>, log_level=<optimized out>, format=<optimized out>)
    at /build/buildd/glib2.0-2.42.1/./glib/gmessages.c:1079
#2  0x00007ffff4dc12c4 in noise_media_is_equal (self=0x7fffa8017970, media1=0x0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/core/Media.vala:36
#3  0x0000000000459e01 in noise_core_services_implementation_real_stop_playback_for_medias (base=0xa8e3a0, medias=0x14312d0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/CoreServicesImplementation.vala:146
#4  0x00007ffff4dbdcf7 in noise_core_services_stop_playback_for_medias (self=0xa8e3a0, medias=0x14312d0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/core/CoreServices.vala:52
#5  0x00007fffd7192104 in noise_sqlite_library_real_remove_medias (base=0x7fffe4004db0, medias=0x14312d0, trash=0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/plugins/SqliteLibrary/SqliteLibrary.vala:259
#6  0x00007ffff4dba700 in noise_library_remove_medias (self=0x7fffe4004db0, toRemove=0x14312d0, trash=0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/core/Library.vala:59
#7  0x00000000004e70ab in ___lambda87_ (_data24_=0x1788e80, delete_files=0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/Views/ListView/Lists/MusicListView.vala:488
#8  0x00000000004e70d1 in ____lambda87__noise_remove_files_dialog_remove_media (_sender=0x17f22b0, response=0, self=0x1788e80)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/Views/ListView/Lists/MusicListView.vala:487
#9  0x00007ffff58500a1 in g_cclosure_marshal_VOID__BOOLEANv (closure=<optimized out>, return_value=<optimized out>, 
    instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x1228f90)
    at /build/buildd/glib2.0-2.42.1/./gobject/gmarshal.c:188
#10 0x00007ffff584e3f7 in _g_closure_invoke_va (closure=0x1721f20, return_value=0x0, instance=0x17f22b0, args=0x7fffffffc3f0, 
    n_params=1, param_types=0x1228f90) at /build/buildd/glib2.0-2.42.1/./gobject/gclosure.c:831
#11 0x00007ffff5866708 in g_signal_emit_valist (instance=instance@entry=0x17f22b0, signal_id=signal_id@entry=672, 
    detail=detail@entry=0, var_args=var_args@entry=0x7fffffffc3f0) at /build/buildd/glib2.0-2.42.1/./gobject/gsignal.c:3218
#12 0x00007ffff5867882 in g_signal_emit_by_name (instance=0x17f22b0, detailed_signal=0x532160 "remove-media")
    at /build/buildd/glib2.0-2.42.1/./gobject/gsignal.c:3405
#13 0x00000000005073ff in __lambda85_ (self=0x17f22b0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/Dialogs/RemoveFilesDialog.vala:117
#14 0x0000000000507429 in ___lambda85__gtk_button_clicked (_sender=0x14da4d0, self=0x17f22b0)
    at /home/cran/Documents/Projects/elementary/noise/instant-beta/src/Dialogs/RemoveFilesDialog.vala:116
#15 0x00007ffff584e3f7 in _g_closure_invoke_va (closure=0x17e1a50, return_value=0x0, instance=0x14da4d0, args=0x7fffffffc748, 
    n_params=0, param_types=0x0) at /build/buildd/glib2.0-2.42.1/./gobject/gclosure.c:831
#16 0x00007ffff5866708 in g_signal_emit_valist (instance=0x14da4d0, signal_id=<optimized out>, detail=0, 

Not sure what we can do right now.
Maybe moving away from nm and using unwind would fix this.

Note: the vala-stacktrace is wrong: MediaDao.get_media is not called (gdb got this right)

How to reproduce

Delete a track in Noise and revert the comment mentioning the issue url

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions