vala-stacktrace icon indicating copy to clipboard operation
vala-stacktrace copied to clipboard

Sometimes the stacktrace is worse than the one gdb returns

Open PerfectCarl opened this issue 10 years ago • 0 comments

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

PerfectCarl avatar Jan 25 '15 16:01 PerfectCarl