RSS/Atom feed Twitter
Site is read-only, email is disabled

gegl-demo & region of interest

This discussion is connected to the gegl-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.

This is a read-only list on gimpusers.com so this discussion thread is read-only, too.

2 of 2 messages available
Toggle history

Please log in to manage your subscriptions.

gegl-demo & region of interest Richard Kralovic 27 Jun 10:20
gegl-demo & region of interest Øyvind Kolås 28 Jun 02:46
Richard Kralovic
2006-06-27 10:20:50 UTC (almost 18 years ago)

gegl-demo & region of interest

Hello,

I have had a quick look at gegl-demo. It looks good ;-), but I have found some bugs (well, I do not understand the details of gegl architecture very well, so may be they are features...)

- after modifying the region of interest in multi-gegl.c (line 89, e.g. to (0,0,200,200) the program crashes. After a bit of hacking it seems to me that the problem appears when there are nodes whose roi has zero dimensions. The backtrace is attached. But I am not sure where should be handled the case with zero roi...

- after modifying the roi only a little (e.g. to 10,10,550,420; so that there is no node with zero roi), the program loops in gegl-node.c: at line 719, the offsetx=tile_offset(-64,64)=64. Hence at line 828 tile_width-offsetx=0 :-(. I changed the definition of REMAINDER to this: #define REMAINDER(dividend, divisor) \ ((((dividend)%(divisor) < 0) ? \ (divisor) - ((-(dividend)) % (divisor)) : \ ((dividend) % (divisor))))
Is this the right fix?

Keep up good work :-)

Richard

babl-memory.c:145 babl_free() memory not allocated by babl allocator Using host libthread_db library "/lib/tls/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1209575200 (LWP 19165)] 0x46b1cace in waitpid () from /lib/tls/libc.so.6 #0 0x46b1cace in waitpid () from /lib/tls/libc.so.6 #1 0x46ac1dd9 in strtold_l () from /lib/tls/libc.so.6 #2 0x46cfa55d in system () from /lib/tls/libpthread.so.0 #3 0xb7f12533 in babl_backtrack () at babl-internal.c:68 #4 0xb7f12557 in babl_die () at babl-internal.c:74 #5 0xb7f1358f in babl_free (ptr=0x809a428) at babl-memory.c:145 #6 0xb7f0f872 in babl_fish_reference_process (babl=0x815bf08, source=0x819c698, destination=0x809a218, n=64) at babl-fish-reference.c:336 #7 0xb7f0dd0c in babl_fish_process (babl=0x815bf08, source=0x819c698, destination=0x809a218, n=64) at babl-fish.c:164 #8 0xb7f125fd in babl_process (babl=0x815bf08, source=0x819c698, destination=0x809a218, n=64) at babl-internal.c:102 #9 0xb7f4ca06 in gegl_buffer_iterate_fmt (buffer=0x809f420, buf=0x8098db8, write=0, format=0x8067930) at gegl-buffer.c:797 #10 0xb7f4ce16 in gegl_buffer_get_fmt (buffer=0x809f420, dst=0x8098db8, format=0x8067930) at gegl-buffer.c:897 #11 0x08052ea7 in evaluate (operation=0x806b278, output_prop=0x806e0e0 "output") at ops/op_opacity.c:132 #12 0x0804d913 in evaluate (operation=0x806b278, output_prop=0x806e0e0 "output") at ops/op_composer.c:199 #13 0xb7f46268 in gegl_operation_evaluate (self=0x806b278, output_pad=0x806e0e0 "output") at gegl-operation.c:124 #14 0xb7f4188c in visit_pad (self=0x8076ca0, pad=0x8060280) at gegl-eval-visitor.c:75 #15 0xb7f493bf in gegl_visitor_visit_pad (self=0x8076ca0, pad=0x8060280) at gegl-visitor.c:435 #16 0xb7f47aef in visitable_accept (visitable=0x8060280, visitor=0x8076ca0) at gegl-pad.c:292 #17 0xb7f484d6 in gegl_visitable_accept (interface=0x8060280, visitor=0x8076ca0) at gegl-visitable.c:74 #18 0xb7f48eed in dfs_traverse (self=0x8076ca0, visitable=0x8060280) at gegl-visitor.c:309 #19 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060220) at gegl-visitor.c:301 #20 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060200) at gegl-visitor.c:301 #21 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060360) at gegl-visitor.c:301 #22 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060340) at gegl-visitor.c:301 #23 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060260) at gegl-visitor.c:301 #24 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060240) at gegl-visitor.c:301 #25 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80601c0) at gegl-visitor.c:301 #26 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060180) at gegl-visitor.c:301 #27 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80603a0) at gegl-visitor.c:301 #28 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060380) at gegl-visitor.c:301 #29 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80605a0) at gegl-visitor.c:301 #30 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060580) at gegl-visitor.c:301 #31 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80607a0) at gegl-visitor.c:301 #32 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8060780) at gegl-visitor.c:301 #33 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80719a0) at gegl-visitor.c:301 #34 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8071980) at gegl-visitor.c:301 #35 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8071ba0) at gegl-visitor.c:301 #36 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8071b80) at gegl-visitor.c:301 #37 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8071da0) at gegl-visitor.c:301 #38 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8071d80) at gegl-visitor.c:301 #39 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80749a0) at gegl-visitor.c:301 #40 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8074980) at gegl-visitor.c:301 #41 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8074ba0) at gegl-visitor.c:301 #42 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8074b80) at gegl-visitor.c:301 #43 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8074da0) at gegl-visitor.c:301 #44 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x8074d80) at gegl-visitor.c:301 #45 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80600c0) at gegl-visitor.c:301 #46 0xb7f48eac in dfs_traverse (self=0x8076ca0, visitable=0x80600e0) at gegl-visitor.c:301 #47 0xb7f48d8c in gegl_visitor_dfs_traverse (self=0x8076ca0, visitable=0x80600e0) at gegl-visitor.c:251 #48 0xb7f416c6 in gegl_eval_mgr_apply (self=0x8073450, root=0x806c818, pad_name=0x805c7df "output") at gegl-eval-mgr.c:129 #49 0xb7f43ca4 in gegl_node_apply_roi (self=0x806c818, output_pad_name=0x805c7df "output", roi=0xbfe549b0) at gegl-node.c:555 #50 0x0805a2e8 in main (argc=1, argv=0xbfe54a74) at multi-gegl.c:82

Øyvind Kolås
2006-06-28 02:46:52 UTC (almost 18 years ago)

gegl-demo & region of interest

On 6/27/06, Richard Kralovic wrote:

I changed the definition of REMAINDER to this: #define REMAINDER(dividend, divisor) \ ((((dividend)%(divisor) < 0) ? \ (divisor) - ((-(dividend)) % (divisor)) : \ ((dividend) % (divisor))))
Is this the right fix?

The new version of the tile_offset function (earlier toff) using the REMAINDER macro is indeed buggy. Your fix is almost correct, the coorect fix was:

#define REMAINDER(dividend, divisor) \ ((((dividend) < 0) ? \ ((divisor) - ((-(dividend)) % (divisor))) % (divisor) : \ ((dividend) % (divisor))))

(the whole point of this macro is that the result of %'ing a negative number is not defined in C, thus using it in the computation doesn't seem the right thing to do ;)

/Øyvind K.