Carsten Haitzler (The Rasterman) ha scritto il 21/08/2016 alle 01:42:
On Sat, 20 Aug 2016 19:04:44 +0200 Massimo Maiurana <maiur...@gmail.com> said:

Carsten Haitzler (The Rasterman) ha scritto il 20/08/2016 alle 14:17:
On Sat, 20 Aug 2016 09:41:00 +0200 Massimo Maiurana <maiur...@gmail.com>
said:

There is an annoying issue that I found in rage from some months ago but
I've always forgot to report it here, sorry :(

There are cases where rage_thumb just go crazy, spawns several
processes, eats up the cpu and reamins active even if I close rage, so I
have to "killal -9 rage_thumb". Tipically it happens if I navigate the
movie clicking with the mouse in the progress bar, so in order to avoid
it I use to navigate via arrow keys.

well - it's generating thumbanils for the whole movie (every 10 seconds or
so it snapshots). it literally sits and loads the movie relying on the gst
generic evas loader to load a specific frame # from the video file. it
loads, scales down, and saves to a big eet archive with all the thumbs in
it for the video...

why is it spinning? some bakctrace, some trace/debug as to what it's
spinning on etc.... would be useful. :)

I would like to help but need also help on how to generate backtraces :)

gdb /usr/local/lib/rage/utils/rage_thumb `pidof rage_thumb`

...

bt

:)

also getting the file it is choking on would be nice. the file will be on the
cmdline passed to rage_thumb..

Ok, I did this: I opened a movie, clicked on some points in the progress bar to go forward and the cpu went 100% (both cores). At this point I had six instances of rage_thumb running. This is the command line:
rage /home/max/Video/Il.Volo.Del.Falco.2014.iTALiAN.BDRiP.XviD-HDi.avi

Then I closed rage but all rage_thumb processes still was alive and kicking... too kicking :) Htop reported small cpu usage for rage_thumb, every process was eating just around 1/1.5% of it. Top made me see that there were many evas_image_load processes that instead was eating much more cpu, 10% and occasionally 20% each process. I generated a backtrace from one of the rage_thumb processes, I don't know how it is useful but it is attached. In the meantime all processes quitted, so it is just a matter of time waiting they do their job, but the problem is that this jog is cpu and time consuming :)

Should I run gdb on evas_image_load and generate a backtrace?


If it would segvs i would do it via a "bt" command in gdb, but it
doesn't crash and also rage_thumb keeps running in multiple processes
when I stop rage, so how should I trace its activities?

^^^^^ you can attach to an existing process any time. when you attach the
process will be paused. you can grab a bt then. you can let it continue
running with "c" (continue) cmd any time. you can pause it again with ctrl+c in
gdb an get another backtrace. switch stack frame with "fr N" where N matches
the backtrace number. list the code where you are at with "l". list a specific
line number in that file in context with "l 1234". print a variable you see
with "p varname" dereference a pointer (like c/c++ does all the time) with "p
*varname" or if its a struct geta  member with "p varname->member". gdb will
even be able to tab complete these like a shell does with files. :)

learning gdb is a very powerful thing. you can find out so much useful info
about a process... :)


Thanks
Massimo

Carsten Haitzler (The Rasterman) ha scritto il 20/08/2016 alle 05:45:
So here is a new release of Rage.

It is a simple video and audio player intended to be slick yet simplistic,
much like Mplayer. You can provide 1 or more files to play on the
command-line or just DND files onto the rage window to insert them into
the playlist. You can get a visual representation of everything on the
playlist by hitting the / key, or just hovering your mouse over the right
side of the window. Mouse back over the left side of the window to
dismiss it or press the key again. It has a full complement of key
controls if you see the README for the full list. It will automatically
search for album art for music files, if not already cached, and display
that. It even generates thumbnails for the timeline of a video and allows
you to preview the position on mouseover of the position bar at the
bottom of the window.

If you run it without any files as arguments, it will go into "browser"
mode where it will index $HOME/Videos and basically become a simple media
center.

A feature list at this point:

  * Play video and audio files
  * Support a playlist via command-line
  * Insert to playlist via DND
  * Controls hide on mouse idle, and appear on mouse movement
  * Fullscreen mode support with automatic "no blank" support
  * Playlist visual previews and controls
  * Subtitle file support
  * Supports Gstreamer 0.10, Gstreamer 1.x, Xine and VLC as media engines
via Emotion modules
  * Selection of media back-end via command-line
  * Album art fetch and caching
  * Video thumbnail timeline generation and caching
  * Works with any Evas engine (OpenGL acceleration, pure software etc.)
  * Works in X11, Wayland and Framebuffer direct support
  * Accelerated seek on keyboard fowrard/reverse
  * Drag gestures for seeking
  * Special different UI modes for pure audio and video
  * Media center browser/indexer mode
  * Simeline thumbails of videos get generated and displayed when over
seek bar

If you want to see more go to the about page at
https://www.enlightenment.org/p.php?p=about/rage

http://download.enlightenment.org/rel/apps/rage/rage-0.2.0.tar.gz
http://git.enlightenment.org/apps/rage.git



--
Massimo Maiurana
Ragusa (RG)

------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel





--
Massimo Maiurana
Ragusa (RG)





--
Massimo Maiurana
Ragusa (RG)
GNU gdb (Debian 7.11.1-2) 7.11.1
Copyright (C) 2016 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-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 /opt/e17/lib/rage/utils/rage_thumb...done.
Attaching to program: /opt/e17/lib/rage/utils/rage_thumb, process 8111
[New LWP 8125]
[New LWP 8148]
[New LWP 8151]
[New LWP 8158]
[New LWP 8159]
[New LWP 8160]
[New LWP 8161]
[New LWP 8162]
[New LWP 8175]
[New LWP 8186]
[New LWP 8187]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f7603f3617d in read () at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: File o directory non esistente.
(gdb) bt
#0  0x00007f7603f3617d in read () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f7603ecd6b8 in _IO_new_file_underflow (fp=0x10706e0) at fileops.c:592
#2  0x00007f7603ece5ae in __GI__IO_default_uflow (fp=0x10706e0) at genops.c:413
#3  0x00007f7603ec2dca in __GI__IO_getline_info (fp=fp@entry=0x10706e0, buf=buf@entry=0x7ffc794cc2b0 "shmfile /evas-loader.31653.231942858", n=n@entry=4095, delim=delim@entry=10, 
    extract_delim=extract_delim@entry=1, eof=eof@entry=0x0) at iogetline.c:60
#4  0x00007f7603ec2ed8 in __GI__IO_getline (fp=fp@entry=0x10706e0, buf=buf@entry=0x7ffc794cc2b0 "shmfile /evas-loader.31653.231942858", n=n@entry=4095, delim=delim@entry=10, 
    extract_delim=extract_delim@entry=1) at iogetline.c:34
#5  0x00007f7603ec1d4d in _IO_fgets (buf=buf@entry=0x7ffc794cc2b0 "shmfile /evas-loader.31653.231942858", n=n@entry=4096, fp=fp@entry=0x10706e0) at iofgets.c:53
#6  0x00007f7606b381c0 in _load (ef=<optimized out>, key=<optimized out>, prop=0x7ffc794cd320, opts=0xe09cc0, pixels=0x7f75c878b000, error=0x7ffc794cd31c, get_data=1 '\001')
    at modules/evas/image_loaders/generic/evas_image_load_generic.c:247
#7  0x00007f7606b3885f in evas_image_load_file_data_generic (loader_data=<optimized out>, prop=<optimized out>, pixels=<optimized out>, error=<optimized out>)
    at modules/evas/image_loaders/generic/evas_image_load_generic.c:441
#8  0x00007f7606ae941c in evas_common_load_rgba_image_data_from_file (ie=0xe09c40) at lib/evas/common/evas_image_load.c:435
#9  0x00007f7606a82894 in evas_cache_image_load_data (im=0xe09c40) at lib/evas/cache/evas_cache_image.c:1197
#10 0x00007f7606aed08d in evas_common_rgba_image_scalecache_do_cbs (ie=0xe09c40, dst=0xcac000, dc=0x106d630, smooth=1, src_region_x=0, src_region_y=0, src_region_w=720, 
    src_region_h=304, dst_region_x=0, dst_region_y=0, dst_region_w=160, dst_region_h=67, cb_sample=0x7f7606af3fc0 <evas_common_scale_rgba_in_to_out_clip_sample>, 
    cb_smooth=0x7f7606afb020 <evas_common_scale_rgba_in_to_out_clip_smooth>) at lib/evas/common/evas_image_scalecache.c:948
#11 0x00007f7606aed283 in evas_common_rgba_image_scalecache_do (ie=ie@entry=0xe09c40, dst=dst@entry=0xcac000, dc=dc@entry=0x106d630, smooth=smooth@entry=1, 
    src_region_x=src_region_x@entry=0, src_region_y=src_region_y@entry=0, src_region_w=720, src_region_h=304, dst_region_x=0, dst_region_y=0, dst_region_w=160, dst_region_h=67)
    at lib/evas/common/evas_image_scalecache.c:1014
#12 0x00007f7606b26502 in eng_image_draw (data=<optimized out>, context=0x106d630, surface=0xcac000, image=0xe09c40, src_x=0, src_y=0, src_w=720, src_h=304, dst_x=0, dst_y=0, 
    dst_w=160, dst_h=67, smooth=1, do_async=0 '\000') at modules/evas/engines/software_generic/evas_engine.c:2333
#13 0x00007f76069e707e in _draw_image (obj=0xf2a7d0, data=<optimized out>, context=<optimized out>, surface=<optimized out>, image=0xe09c40, src_x=<optimized out>, src_y=0, 
    src_w=720, src_h=304, dst_x=0, dst_y=0, dst_w=160, dst_h=67, smooth=1, do_async=0 '\000') at lib/evas/canvas/evas_object_image.c:1461
#14 0x00007f76069edf7c in _evas_image_render (eo_obj=eo_obj@entry=0x4000000340000035, obj=obj@entry=0xf2a7d0, output=output@entry=0xa649f0, context=context@entry=0x106d630, 
    surface=surface@entry=0xcac000, x=x@entry=0, y=<optimized out>, l=<optimized out>, t=<optimized out>, r=<optimized out>, b=<optimized out>, do_async=<optimized out>)
    at lib/evas/canvas/evas_object_image.c:1953
#15 0x00007f76069eecff in evas_object_image_render (eo_obj=0x4000000340000035, obj=0xf2a7d0, type_private_data=0xf2a8f0, output=0xa649f0, context=0x106d630, surface=0xcac000, 
    x=0, y=0, do_async=0 '\000') at lib/evas/canvas/evas_object_image.c:1782
#16 0x00007f7606a5e84e in evas_render_mapped (evas=evas@entry=0xcab300, eo_obj=eo_obj@entry=0x4000000340000035, obj=obj@entry=0xf2a7d0, context=context@entry=0xcac390, 
    surface=surface@entry=0xcac000, off_x=off_x@entry=0, off_y=<optimized out>, mapped=<optimized out>, ecx=<optimized out>, ecy=<optimized out>, ecw=<optimized out>, 
    ech=<optimized out>, proxy_render_data=<optimized out>, level=<optimized out>, use_mapped_ctx=<optimized out>, do_async=<optimized out>) at lib/evas/canvas/evas_render.c:1812
#17 0x00007f7606a607ec in evas_render_updates_internal_loop (eo_e=eo_e@entry=0x40000001e000001f, e=e@entry=0xcab300, surface=surface@entry=0xcac000, context=0xcac390, 
    top=top@entry=0x0, ux=0, uy=0, uw=160, uh=67, cx=0, cy=0, cw=160, ch=67, fx=0, fy=0, alpha=0 '\000', do_async=0 '\000', offset=0x7ffc794cdab0, level=0)
    at lib/evas/canvas/evas_render.c:2410
#18 0x00007f7606a62c9e in evas_render_updates_internal (eo_e=eo_e@entry=0x40000001e000001f, make_updates=make_updates@entry=1 '\001', do_draw=do_draw@entry=1 '\001', 
    done_func=done_func@entry=0x0, done_data=done_data@entry=0x0, do_async=do_async@entry=0 '\000') at lib/evas/canvas/evas_render.c:2789
#19 0x00007f7606a63b61 in evas_render_updates_internal_wait (eo_e=eo_e@entry=0x40000001e000001f, make_updates=make_updates@entry=1 '\001', do_draw=1 '\001')
    at lib/evas/canvas/evas_render.c:3150
#20 0x00007f7606a642f0 in _evas_canvas_render_updates (eo_e=0x40000001e000001f, e=0xcab300) at lib/evas/canvas/evas_render.c:3173
#21 0x00007f76069de76b in evas_canvas_render_updates (obj=0x40000001e000001f) at ../src/lib/evas/canvas/evas_canvas.eo.c:248
#22 0x00007f76069e0c75 in evas_render_updates (obj=<optimized out>) at ../src/lib/evas/canvas/evas_canvas.eo.c:785
#23 0x00007f760652d6f3 in _ecore_evas_buffer_render (ee=0xca6890) at lib/ecore_evas/ecore_evas_buffer.c:144
#24 0x000000000040242d in _cb_loaded (data=0x7ffc794d2206, obj=<optimized out>, info=<optimized out>) at thumb.c:131
#25 0x00007f7605bf7a88 in _efl_object_event_callback_call (obj_id=<optimized out>, pd=0xcb5b00, desc=0x7f76059de0b0 <_EMOTION_OBJECT_EVENT_OPEN_DONE>, event_info=<optimized out>)
    at lib/eo/eo_base_class.c:1176
#26 0x00007f7605bf6604 in efl_event_callback_call (obj=0x40000002b000002c, desc=desc@entry=0x7f76059de0b0 <_EMOTION_OBJECT_EVENT_OPEN_DONE>, event_info=event_info@entry=0x0)
    at lib/eo/efl_object.eo.c:142
#27 0x00007f76057cdc0d in _emotion_open_done (obj=<optimized out>) at lib/emotion/emotion_smart.c:1580
#28 0x00007f75fad2f10a in _bus_main_handler (data=0x7f75b80010c0) at modules/emotion/gstreamer1/emotion_gstreamer.c:1500
#29 0x00007f7606748938 in _ecore_main_call_flush () at lib/ecore/ecore.c:1005
#30 0x00007f760675483e in _ecore_pipe_handler_call (p=p@entry=0xa5b520, buf=0xc89130 "*", len=<optimized out>) at lib/ecore/ecore_pipe.c:511
#31 0x00007f7606754ed3 in _ecore_pipe_read (data=0xa5b520, fd_handler=<optimized out>) at lib/ecore/ecore_pipe.c:637
#32 0x00007f76067528b2 in _ecore_call_fd_cb (fd_handler=0xa51390, data=<optimized out>, func=<optimized out>) at lib/ecore/ecore_private.h:333
#33 _ecore_main_fd_handlers_call () at lib/ecore/ecore_main.c:1974
#34 _ecore_main_loop_iterate_internal (once_only=once_only@entry=0) at lib/ecore/ecore_main.c:2339
#35 0x00007f7606752cc7 in ecore_main_loop_begin () at lib/ecore/ecore_main.c:1286
#36 0x00007f76078bb655 in elm_run () at lib/elementary/elm_main.c:1258
#37 0x00000000004028c0 in elm_main (argc=argc@entry=5, argv=argv@entry=0x7ffc794cffe8) at thumb.c:200
#38 0x000000000040207c in main (argc=5, argv=0x7ffc794cffe8) at thumb.c:205
(gdb) quit
A debugging session is active.

	Inferior 1 [process 8111] will be detached.

Quit anyway? (y or n) y
Detaching from program: /opt/e17/lib/rage/utils/rage_thumb, process 8111
------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to