After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 729443 - Segmentation fault on saving tag to OGG file
Segmentation fault on saving tag to OGG file
Status: RESOLVED FIXED
Product: easytag
Classification: Other
Component: general
master
Other Linux
: High critical
: 2.2
Assigned To: EasyTAG maintainer(s)
EasyTAG maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2014-05-03 06:11 UTC by Alex Forencich
Modified: 2014-05-04 09:42 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Alex Forencich 2014-05-03 06:11:34 UTC
Not sure when this regression occurred as I have not used easytag for some time. Anyway, there are certain ogg files that it does not want to edit, and it crashes instantly with a segmentation fault when I try to save the tags.  I am unsure what it is about the files - initially I thought it was that the tags contained Chinese, Japanese, or Korean characters, but I have a few files that should be pure 7-bit ASCII that are also causing easytag to crash.  It works fine with mp3 files.  I'm currently running 2.2.1 in Arch Linux.
Comment 1 David King 2014-05-03 20:51:09 UTC
Thanks for taking the time to report this bug.
Without a stack trace from the crash it's very hard to determine what caused it.
Can you get us a stack trace? https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces for more information on how to do so. Thanks in advance!
Comment 2 Alex Forencich 2014-05-03 21:07:44 UTC
After rebuilding from source to get the debug symbols, this is what I get from gdb:

GNU gdb (GDB) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from easytag...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/easytag 
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
warning: File "/usr/lib/libstdc++.so.6.0.19-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
	add-auto-load-safe-path /usr/lib/libstdc++.so.6.0.19-gdb.py
line to your configuration file "/home/alex/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/alex/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffeb0b5700 (LWP 16278)]
[New Thread 0x7fffdbfa1700 (LWP 16280)]
[New Thread 0x7fffdb7a0700 (LWP 16281)]
[New Thread 0x7fffdaf9f700 (LWP 16282)]
[Thread 0x7fffdaf9f700 (LWP 16282) exited]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4406c6a in strlen () from /usr/lib/libc.so.6
(gdb) thread apply all bt

Thread 1 (Thread 0x7ffff7f8e900 (LWP 16274))

  • #0 strlen
    from /usr/lib/libc.so.6
  • #1 ogg_tag_write_file_tag
  • #2 ET_Save_File_Tag_To_HD
  • #3 Save_List_Of_Files
  • #4 Save_Selected_Files_With_Answer
  • #5 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #6 ??
    from /usr/lib/libgobject-2.0.so.0
  • #7 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #8 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #9 ??
    from /usr/lib/libgtk-3.so.0
  • #10 ??
    from /usr/lib/libgtk-3.so.0
  • #11 ??
    from /usr/lib/libgobject-2.0.so.0
  • #12 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #13 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #14 ??
    from /usr/lib/libgtk-3.so.0
  • #15 ??
    from /usr/lib/libgtk-3.so.0
  • #16 ??
    from /usr/lib/libgobject-2.0.so.0
  • #17 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #18 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #19 ??
    from /usr/lib/libgtk-3.so.0
  • #20 ??
    from /usr/lib/libgtk-3.so.0
  • #21 ??
    from /usr/lib/libgobject-2.0.so.0
  • #22 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #23 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #24 ??
    from /usr/lib/libgtk-3.so.0
  • #25 ??
    from /usr/lib/libgtk-3.so.0
  • #26 gtk_main_do_event
    from /usr/lib/libgtk-3.so.0
  • #27 ??
    from /usr/lib/libgdk-3.so.0
  • #28 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #29 ??
    from /usr/lib/libglib-2.0.so.0
  • #30 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #31 gtk_main
    from /usr/lib/libgtk-3.so.0
  • #32 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #33 ??
    from /usr/lib/libgobject-2.0.so.0
  • #34 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #35 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #36 et_local_command_line
  • #37 g_application_run
    from /usr/lib/libgio-2.0.so.0
  • #38 main
A debugging session is active.

	Inferior 1 [process 16274] will be killed.

Quit anyway? (y or n) y
Comment 3 David King 2014-05-03 21:19:43 UTC
Thanks for the stack trace. However, that trace is missing line numbers, and those are quite important for solving this bug. Can you ensure that full debugging symbols are included, so that you get line numbers in the stack trace?
Comment 4 Alex Forencich 2014-05-03 21:32:56 UTC
I thought they were.  What do I need to do to enable full debug symbols?
Comment 5 David King 2014-05-03 21:35:33 UTC
You probably need to add "-g" or "-ggdb" to the CFLAGS and CXXFLAGS when compiling EasyTAG.
Comment 6 Alex Forencich 2014-05-03 21:48:30 UTC
Alright, here is what I get now:

GNU gdb (GDB) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./easytag...done.
(gdb) run
Starting program: /home/alex/sources/easytag/src/easytag-2.2.1/easytag 
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
warning: File "/usr/lib/libstdc++.so.6.0.19-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
	add-auto-load-safe-path /usr/lib/libstdc++.so.6.0.19-gdb.py
line to your configuration file "/home/alex/.gdbinit".
To completely disable this security protection add
	set auto-load safe-path /
line to your configuration file "/home/alex/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
	info "(gdb)Auto-loading safe path"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffeb0b5700 (LWP 23367)]
[New Thread 0x7fffdbfa1700 (LWP 23368)]
[New Thread 0x7fffdb7a0700 (LWP 23369)]
[New Thread 0x7fffdaf9f700 (LWP 23370)]
[Thread 0x7fffdb7a0700 (LWP 23369) exited]

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff379ac6a in strlen () from /usr/lib/libc.so.6
(gdb) thread apply all bt

Thread 1 (Thread 0x7ffff7f8d900 (LWP 23363))

  • #0 strlen
    from /usr/lib/libc.so.6
  • #1 ogg_tag_write_file_tag
    at src/ogg_tag.c line 1095
  • #2 ET_Save_File_Tag_To_HD
    at src/et_core.c line 4033
  • #3 Write_File_Tag
    at src/easytag.c line 3091
  • #4 Save_File
    at src/easytag.c line 2824
  • #5 Save_List_Of_Files
    at src/easytag.c line 2477
  • #6 Save_Selected_Files_With_Answer
    at src/easytag.c line 2309
  • #7 Action_Save_Selected_Files
    at src/easytag.c line 2257
  • #8 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #9 ??
    from /usr/lib/libgobject-2.0.so.0
  • #10 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #11 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #12 ??
    from /usr/lib/libgtk-3.so.0
  • #13 ??
    from /usr/lib/libgtk-3.so.0
  • #14 ??
    from /usr/lib/libgobject-2.0.so.0
  • #15 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #16 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #17 ??
    from /usr/lib/libgtk-3.so.0
  • #18 ??
    from /usr/lib/libgtk-3.so.0
  • #19 ??
    from /usr/lib/libgobject-2.0.so.0
  • #20 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #21 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #22 ??
    from /usr/lib/libgtk-3.so.0
  • #23 ??
    from /usr/lib/libgtk-3.so.0
  • #24 ??
    from /usr/lib/libgobject-2.0.so.0
  • #25 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #26 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #27 ??
    from /usr/lib/libgtk-3.so.0
  • #28 ??
    from /usr/lib/libgtk-3.so.0
  • #29 gtk_main_do_event
    from /usr/lib/libgtk-3.so.0
  • #30 ??
    from /usr/lib/libgdk-3.so.0
  • #31 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #32 ??
    from /usr/lib/libglib-2.0.so.0
  • #33 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #34 gtk_main
    from /usr/lib/libgtk-3.so.0
  • #35 common_init
    at src/easytag.c line 317
  • #36 on_application_activate
    at src/easytag.c line 523
  • #37 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #38 ??
    from /usr/lib/libgobject-2.0.so.0
  • #39 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #40 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #41 et_local_command_line
    at src/application.c line 77
  • #42 g_application_run
    from /usr/lib/libgio-2.0.so.0
  • #43 main
    at src/easytag.c line 569
A debugging session is active.

	Inferior 1 [process 23363] will be killed.

Quit anyway? (y or n) y
Comment 7 David King 2014-05-03 21:59:26 UTC
Thanks! That suggests that the image description is unset, and that strlen() is being called on a NULL string. Do you have a copy of the file that causes EasyTAG to crash, which you could send me by private email?
Comment 8 Alex Forencich 2014-05-03 22:08:24 UTC
Sent.
Comment 9 David King 2014-05-04 09:42:34 UTC
I just pushed a patch which fixes the problem for me, to the master and easytag-2-2 branches, as 7542ad103a7280d783de5379f9214d61472e92f9 and dc074036a1ec1217fdd1e9a942e7e120e7523b84. The fix will be in an upcoming 2.2.2 release, due in the next week or so, and you can apply the patch to your local version until then:

https://git.gnome.org/browse/easytag/commit/?h=easytag-2-2&id=dc074036a1ec1217fdd1e9a942e7e120e7523b84