IRC log for #brlcad on 20130729

00:08.51 Notify 03BRL-CAD:brlcad * 56298 brlcad/trunk/src/libged/polyclip.cpp: well if they are, should be okay
00:13.24 Notify 03BRL-CAD:brlcad * 56299 (brlcad/trunk/src/libged/polyclip.cpp brlcad/trunk/src/libged/view_obj.c and 4 others): eliminate undocumented dead code
00:14.58 Notify 03BRL-CAD:brlcad * 56300 brlcad/trunk/src/libpc/solver_test.cpp: document why the libpc tests are disabled
00:22.45 Notify 03BRL-CAD:brlcad * 56301 brlcad/trunk/src/librt/cut.c: eliminate the manual recursion dead code since rt_ct_optim() is better reuse and the implications of the dead one are not clear.
02:34.22 Notify 03BRL-CAD:brlcad * 56302 (brlcad/trunk/src/librt/mkbundle.c brlcad/trunk/src/librt/tests/CMakeLists.txt): extract the ray bundle test harness into its own proper test program
02:41.46 zero_level_ brlcad : I found an interesting and an annoying bug
02:42.48 zero_level_ at L:811 in viewedge.c
02:43.09 zero_level_ When i remove the acquire semaphore (comment it)
02:43.53 zero_level_ the rtedge command works fine. else it hangs in between ?Do we need the semaphore there.
02:44.43 zero_level_ Because evidently even if it is done parallelly. each process will be writing at separate lines.
02:55.40 Notify 03BRL-CAD:phoenixyjll * 56303 brlcad/trunk/src/libbrep/intersect.cpp: If we insert the inner points of overlap2d like this, the points may not be in order. So we don't use these points. A better approach would be using a mapping of m_a and m_b.
03:58.40 brlcad zero_level_: yes the semaphore is needed
03:58.46 brlcad if it hangs, something else is wrong
03:58.55 brlcad like something else acquired that same semaphore
03:59.17 brlcad or even the same process that is running acquired one and didn't release it
04:08.53 Notify 03BRL-CAD:phoenixyjll * 56304 brlcad/trunk/src/libbrep/intersect.cpp: Remove duplicated curves.
04:11.50 brlcad zero_level_: make sure icv doesn't acquire that same semaphore before calling/returning back to viewedge
04:14.11 Notify 03BRL-CAD:mohitdaga * 56305 (brlcad/trunk/include/icv.h brlcad/trunk/include/magic.h brlcad/trunk/src/libicv/fileformat.c): Converting ICV_IMAGE_FILE_MAGIC to ICV_IMAGE_MAGIC.
04:37.31 *** join/#brlcad zero_level_ (0e8bf3a2@gateway/web/freenode/ip.14.139.243.162)
04:39.02 zero_level_ brlcad : icv doesnt acquire any semaphore.
04:39.55 zero_level_ brlcad: can it be machine dependent ?
04:49.43 zero_level_ It is something like a deadlock happening here.
04:49.53 zero_level_ And I seem to have no idea how to resolve this.
04:50.22 zero_level_ brlcad : can we track the acquired semaphores ?
05:07.46 brlcad zero_level_: you can set BU_DEBUG_PARALLEL, but you'll do better to set breakpoints in a debugger
05:09.49 brlcad BU_DEBUG_PARALLEL is set with the bu debug flags (which is the -! option for rtedge, see src/rt/opt.c)
05:09.58 brlcad see include/bu.h for the value to set (in hex)
05:10.14 *** join/#brlcad zero_level__ (0e8bf3a2@gateway/web/freenode/ip.14.139.243.162)
05:15.30 *** join/#brlcad zero_level_ (0e8bf3a2@gateway/web/freenode/ip.14.139.243.162)
05:15.40 zero_level_ looks ab bu.h
05:16.10 zero_level_ brlcad : I found this error by setting debug points in the code.
05:16.21 zero_level_ which debugger do u suggest ?
05:16.52 zero_level_ also i saw the presentation you gave
05:17.26 zero_level_ It helped me understanding the architecture of rt
05:59.46 *** join/#brlcad caen23 (~caen23@92.83.175.255)
06:55.03 zero_level_ brlcad : one of the threads of bu_parallel in do_run(..) function in worker.c is not getting completed.
06:55.23 zero_level_ wonder how has this anything to do with icv ?
06:59.59 Notify 03BRL-CAD Wiki:Phoenix * 5862 /wiki/User:Phoenix/GSoc2013/Reports: /* Week 7 */
08:46.24 *** join/#brlcad phoenixyjll (0e889157@gateway/web/freenode/ip.14.136.145.87)
09:05.21 *** join/#brlcad caen23 (~caen23@92.83.175.255)
09:22.45 *** join/#brlcad d_rossberg (~rossberg@66-118-151-70.static.sagonet.net)
09:30.30 *** join/#brlcad Ch3ck (~Ch3ck@195.24.220.16)
10:16.43 Ch3ck Hi i've just logged into my bz.bzflag.bz account and I wish to change my password. Can anyone tell me how?
10:19.46 ``Erik run 'passwd'
10:23.21 Ch3ck yeah did that already thanks
11:48.36 *** join/#brlcad Ch3ck_ (~Ch3ck@66-118-151-70.static.sagonet.net)
12:09.05 *** join/#brlcad Ch3ck (~Ch3ck@66-118-151-70.static.sagonet.net)
12:15.04 *** join/#brlcad DarkCalf (~DarkCalf@173.231.40.99)
12:17.56 *** join/#brlcad Ch3ck (~Ch3ck@66-118-151-70.static.sagonet.net)
12:21.15 zero_level hi ``Erik, brlcd : still unable to find the bug.
12:23.08 zero_level It seems that at 819. the semaphore is not acquired thus a deadlock
12:23.24 zero_level at 819 in rt/viewedge.c
12:23.26 ``Erik with icv saving in viewedge.c? I don't remember exactly what, but there was something 'weird' about it that required a special bailout
12:24.31 ``Erik iirc (and this is a huge if, that was years ago), once I figured it out, I just put in the fix with the plan to re-do viewedge.c completely to make it more like a normal rt
12:25.11 ``Erik unfortunately, I failed to document it and did not rewrite viewedge and don't remember what the exact issue was :/ srry
12:25.26 zero_level no issues.
12:25.35 zero_level i am just copying what I found.
12:25.44 zero_level We can together fix it.
12:26.03 zero_level at 757 in worker.c parallel process are created.
12:26.13 zero_level in function do_run(..)
12:26.19 ``Erik yes, via bu_parallel()
12:26.59 zero_level all parallel function call worker(..0
12:27.07 zero_level worker then call do_pixel
12:27.45 zero_level do_pixel() then calls view_eol(...) in viewedge.c
12:28.12 ``Erik I believe I was wrapping the icv stuff in a bu_semaphore, that might be unnecessary... if we can trust that each worker has an exclusive memory segment
12:28.38 zero_level A semaphore is to be acquired in view_eol for wriiting in the icv_struct
12:28.42 ``Erik exclusively accessed, but globally accessable, so the final write out can get them all
12:29.07 zero_level yes, indeed I asked brlcad : and he says the semaphore is required.
12:29.19 ``Erik why?
12:29.35 zero_level I tried to get rid of the semaphore (commenting them) and it worked.
12:29.55 zero_level 23:58 < brlcad> zero_level_: yes the semaphore is needed
12:29.57 zero_level 23:58 < brlcad> if it hangs, something else is wrong
12:29.57 zero_level 23:58 < brlcad> like something else acquired that same semaphore
12:29.57 zero_level 23:59 < brlcad> or even the same process that is running acquired one and didn't release it
12:29.58 zero_level 23:58 < brlcad> zero_level_: yes the semaphore is needed
12:30.00 zero_level 23:58 < brlcad> if it hangs, something else is wrong
12:30.03 zero_level 23:58 < brlcad> like something else acquired that same semaphore
12:30.05 zero_level 23:59 < brlcad> or even the same process that is running acquired one and didn't release it
12:30.08 zero_level oops ! copied twice
12:30.30 ``Erik please don't paste large bodies to channel, if it's more than a line or two, use one of the paste websites :)
12:30.39 ``Erik there's no answer in what he said
12:30.39 zero_level alright
12:30.47 zero_level yes
12:32.13 ``Erik viewedge adds some necessary locking requirements, but it also has a lot of very bad approaches... my take-away was that the original author had no idea what they were doing and hacked until it seemed to work
12:32.54 ``Erik it uses two pixels on the current scanline and one on the previous scan line to compute the color, iirc
12:34.17 ``Erik so there is some weird memory management and locking that has to occur, but ... hm, I'd need to review the code and collect my thoughts to see where I'm going :)
12:34.27 zero_level ok.
12:34.47 ``Erik it's a "here be dragons" bit of code, I'd recommend putting it on the back burner and focusing elsewhere in the meantime
12:35.00 zero_level alrigt.
12:35.30 zero_level But we goto do smth since this bugs an important command.
12:35.39 zero_level If u suggest i can remove that semaphore.
12:35.48 zero_level Since it works without it.
12:36.25 ``Erik try removing the semaphore and then doing a raytrace on bz with, hm, say 16 threads... or 100... and see if the output seems correct
12:37.00 zero_level can i compile the src code on bz.?
12:37.03 ``Erik if you have a machine with more than 8 cores, try on that?
12:37.17 ``Erik sure, bz has a full dev suite
12:38.05 zero_level ``Erik : If I recall correctly from my class knowledge, Semaphore is required when a resource is to be used by more than one process.
12:38.21 ``Erik it's currently slightly hacked up to force clang instead of gcc
12:38.22 zero_level where as here each process will be writting different line.
12:38.47 ``Erik that is true, and since each line is a unique chunk of memory, there should be no conflict
12:38.56 zero_level yes. Exactly.
12:39.50 ``Erik <-- points up where he said that the bu_sempahore might be unnecessary since the workers have access to an exclusive memory segment :)
12:40.39 zero_level ?
12:41.22 zero_level ``Erik is there a documentation on how to compile on bz ?
12:41.36 ``Erik same as any unix machine, get a fresh checkout, run cmake, run make
12:41.45 zero_level alright.
12:42.38 ``Erik if you need any tools installed on that machine, let me or brlcad know and we'll figure it out
12:43.17 zero_level Also ``Erik apart from the rtede issue.
12:43.50 zero_level I think the FIXME in rt/do.c is now fixed.
12:44.29 zero_level regarding bw images and rtxray
12:55.23 ``Erik I've sent myself an email to my work account and will look over these with care tomorrow, ok? today is one of my 'unemployed' days and I have some ios work to do :)
12:55.56 zero_level sure no issues.
12:57.10 ``Erik I'll still keep an eye on irc if any immediate questions come up, so still feel free to ask/contemplate in chan, just don't expect a code review until tomorrow
12:57.53 ``Erik effin' ios 7 deleting the top status bar and moving 0,0 up to dead coordinates
12:58.16 zero_level ``Erik I will also want to learn IOS stuff from you. :-)
12:58.47 ``Erik I'd probably be the wrong person to learn from... but if you have a certain interest, I can probably direct you towards a good resource
13:00.24 ``Erik I have a trivial "lottery calculator" app in the store, an opengl based version of the atari classic "kaboom!" that they won't accept due to the artwork and I'm currently gearing up to do a guitar tuner app... I'm no guru for ios :D
13:03.11 zero_level i am getting this strange issue on svn at bz
13:03.14 zero_level svn: E170000: Unrecognized URL scheme for
13:03.53 zero_level on searching, they direct to re install.
13:04.01 ``Erik crap, ..
13:04.02 zero_level i am sure i am doing smth wrong here.
13:04.05 ``Erik no
13:04.31 ``Erik I've been having issues with flags on the subversion install and handling of repo's via libcurl
13:05.40 ``Erik maybe try svn checkout svn://svn.code.sf.net/p/brlcad/code/brlcad/trunk brlcad-code
13:07.28 zero_level works.
13:07.31 zero_level :-)
13:07.48 ``Erik might be a bad solution.. I'm reinstalling svn and going to try with the http addy
13:12.11 ``Erik ok, svn should be fixed on bz
13:12.16 ``Erik (works for me)
13:15.43 Ch3ck initially tried an svn checkout with svn https link and it said svn does not work but with the link u've just given works fine for me too
13:24.01 *** join/#brlcad Ch3ck_ (~Ch3ck@195.24.220.16)
13:27.43 zero_level Apparently It turns out i cannot do sudo make install on bz.
13:28.02 zero_level did make install
13:28.11 *** join/#brlcad Izak_ (~Izak@195.24.220.16)
13:28.24 zero_level not sure if it will compile correctly.
13:29.06 Ch3ck_ currently compiling code here and getting the same problem looks like its in Polyclipp.cpp
13:29.21 Izak_ Build is failing due to a typo in line 286 src/libged/polyclip.cpp. currently fixing this typo
13:29.43 Ch3ck_ waiting on some corrections of this.
13:33.07 zero_level so Izak_ so that be small v instead of CAP V
13:33.09 zero_level ?
13:33.51 Izak_ yes I am working on that patch
13:34.36 Ch3ck_ could someone please fix thing and update code repository? flying blind here!
13:35.05 Ch3ck_ gotta continue working on libbn
13:36.07 Notify 03BRL-CAD Wiki:Level zero * 5863 /wiki/User:Level_zero/GSOC13/logs: LOGS
13:49.08 brlcad zero_level: what I don't yet understand is how you are encountering a hang with rtedge
13:49.42 brlcad so let me be more specific as to what I hear you're suggesting and you can correct me if what I'm saying is not true
13:50.16 brlcad you're encountering some sort of hang with rtedge (on/near line 811) and if you remove the semaphore lock, it works, no longer hangs
13:50.28 zero_level yes
13:51.14 brlcad if I remove the semaphore lock, rtedge reliably produces a segmentation violation (it crashes) because of multiple unprotected writes to framebuffer memory
13:51.56 brlcad this means you've got the initiative
13:52.10 brlcad why is yours locking is the first question to figure out
13:52.27 brlcad not what line of code causes it to lock, WHY is it locking conceptually
13:52.59 brlcad zero_level: do you see it hanging on an unmodified brl-cad?
13:53.06 zero_level thats what ``Erik suggested
13:53.09 brlcad or is the hang due to something you've changed?
13:53.11 zero_level to run
13:53.16 zero_level it on bz.
13:53.33 zero_level It doesnt hang on unmodified.
13:53.50 brlcad so then almost certainly it is something you've introduced/changed
13:54.00 brlcad make a smaller modification
13:54.28 brlcad do you think you understand how locking works?
13:54.42 zero_level never tried practically.
13:54.50 zero_level apart from systems lab
13:54.59 zero_level though have some textbook knowledge.
13:55.23 zero_level also brlcad do we have some flag to find semaphore locks ?
13:55.25 brlcad i'm talking about general textbook knowledge of what a semaphore/mutex lock is and how it pertains to code execution
13:55.33 zero_level yes.
13:56.14 brlcad so then all you need to know is to understand how libbu does it's locking, which is actually quite a simplified form
13:56.58 zero_level some debug flags to find locks?
13:57.17 brlcad you could add something simple, but no this is usually not an issue
13:57.22 Notify 03BRL-CAD Wiki:NyahCh3ck20 * 5864 /wiki/User:NyahCh3ck20/GSoc2013/Coding_Repor: /* 29 July - 4 August */
13:57.25 brlcad bu_semaphore_acquire(KEY) ... bu_semaphore_release(KEY)
13:58.26 brlcad for that line 811 to hang, it really only means one thing has happened
13:58.57 brlcad that a lock has already been acquired on the KEY=BU_SEM_SYSCALL semaphore
14:01.03 brlcad zero_level: if you run in a debugger, just put a break point on bu_semaphore_acquire
14:01.07 zero_level probably at L:695
14:01.40 brlcad line numbers aren't going to be useful if you've made a modificiation, since it's the modification that is introducing a problem
14:01.50 zero_level oops! nevermind :-)
14:02.02 zero_level doesnt go to that block
14:02.04 zero_level yepp.
14:03.17 brlcad I think you need to make your patch smaller to where you isolate what exactly is causing this, if you cannot use the debugger to find it
14:03.29 brlcad do you know how to set a breakpoint on functions in a debugger?
14:03.42 zero_level no!
14:03.56 brlcad well why not? :)
14:04.00 zero_level can u suggest me a debugger.
14:04.05 zero_level :-)
14:04.11 ``Erik gdb
14:04.16 zero_level alright
14:04.19 Izak_ gdb
14:04.33 zero_level but it has issues related to commands with args.
14:04.48 brlcad it doesn't have issues
14:04.51 brlcad you might have issues :)
14:04.52 zero_level ok.
14:05.04 zero_level sure then I am on my way to gdb.
14:05.27 brlcad gdb --args bin/rt share/db/moss.g all.g
14:05.37 brlcad b bu_semaphore_acquire
14:05.38 brlcad run
14:06.33 ``Erik gdb is a bit tricky to get started with, but is a very powerful tool... (much like vim or emacs)
14:09.12 ``Erik also; you won't get sudo. by the time you're ready for sudo, you won't really want it. so forget that, just ask brlcad or me for software installs, we'll assess and if it makes sense, we'll take care of it.
14:10.52 zero_level Alright, I understand its server issue.
14:11.16 zero_level But can i still install brl-cad.
14:11.54 ``Erik when you run cmake, do -DCMAKE_INSTALL_PREFIX=$HOME/brlcad or something
14:11.55 zero_level <PROTECTED>
14:12.00 zero_level ok
14:12.10 Ch3ck_ hey what about this error on polyclipp.cpp that i'm getting when compiling code?
14:12.15 Ch3ck_ anybody fixed it yet?
14:16.37 Izak_ ps developers : Apply ticket 218 of patches on sf.net
14:18.17 Izak_ brlcad: A small typo on line 286 of src/libged/polyclip.cpp has been fixed in ticket 218 . ps apply so build succeeds :)
14:25.04 Notify 03BRL-CAD:mohitdaga * 56306 brlcad/trunk/src/libged/polyclip.cpp: Fixing typo. Applying patch 218 by Isaac Kamga.
14:26.24 zero_level Izak_ u must do an svn up now.
14:26.39 zero_level Ch3ck : one can edit the file manually ;)
14:26.47 Izak_ yap
14:28.30 Ch3ck_ yeah did that code compiles now perfectly :)
14:29.05 *** join/#brlcad kesha (~kesha@14.139.122.114)
14:34.12 brlcad Izak_: thanks
14:37.57 brlcad zero_level: you'll wnat to delete your build directory and re-run cmake with that -DCMAKE_INSTALL_PREFIX option
14:38.17 brlcad so that brl-cad installs into your home directory instead of the system path
14:39.48 zero_level brlcad : did u run the rtege command without removing the bu_log_semaphore ?
14:39.49 brlcad Ch3ck_: the issues that starseeker was telling you last night are all things that I've said as well
14:40.10 brlcad zero_level: yes
14:40.13 brlcad I run it all the time
14:40.17 brlcad it's a heavily used command
14:40.30 zero_level I mean after applying icv
14:40.32 zero_level changed
14:40.40 zero_level that is modified icv
14:40.46 zero_level so to say
14:40.49 brlcad no, of course not - I hear it hangs ;)
14:40.59 zero_level can u do it now ?
14:41.02 brlcad not really
14:41.09 brlcad I'm in the middle of several other things
14:41.09 zero_level alright
14:41.12 zero_level sure
14:41.31 Ch3ck_ brlcad: Well I thought if i finish combining the push/xpush it'll give me commit access
14:41.35 Ch3ck_ which is what i've done.
14:41.45 brlcad I can try to take a look later this evening, but this really is your issue to resolve since you introduced it
14:41.57 brlcad Ch3ck_: commit access does not work like that
14:42.08 zero_level alright. :-)
14:42.38 brlcad commit access is a process unique to each individual depending on how good they are at communicating, creating good patches, etc
14:43.32 brlcad that task to merge push+xpush could have been sufficient, but it's problematic because of the way it's been worked and communicated
14:43.55 brlcad for example, you said last night that you could not see a way to break the patch up
14:44.15 brlcad which I think is curious, because I can think of dozens of ways to break that patch up
14:44.35 brlcad with the goal-mindset you have, sure, but then patches are NOT about the goal
14:44.47 brlcad they're about demonstrating competency communicating with other developers
14:45.19 Ch3ck_ yeah
14:46.21 brlcad if you can only explain a concept by making me read the entire concept, you've not yet figured out how to communicate effectively, right?
14:46.35 Ch3ck_ Did not see it that way. Was thinking more about getting the problem solved.
14:46.52 brlcad which it doesn't do
14:47.01 brlcad sure it merges the two
14:47.11 brlcad but the PROBLEM is what I stated on the mailing list many weeks ago
14:47.21 Ch3ck_ yes.
14:47.25 brlcad if the two are going to be merged, the user interface question has to be addressed
14:47.49 brlcad you don't address that, you just merged them code-wise without regard to the interface impliciation
14:48.06 brlcad which means the code must be scrutinized that much more closely
14:48.09 Ch3ck_ Well I made xpush 'push -x'
14:48.14 brlcad exactly
14:48.16 brlcad is that best?
14:48.18 Ch3ck_ and push stayed the same
14:48.31 brlcad how does that affect users?
14:48.45 Ch3ck_ well you had told me to write in such a way which the command could figure that out and do the right
14:49.01 Ch3ck_ thing. Which I could still do.
14:49.21 brlcad figure what out?
14:49.46 Ch3ck_ in case where an object that moves in more than one direction is given to the push command
14:50.15 Ch3ck_ the command will be able to detect that case and do the right push on it which is like 'xpush' ing the object
14:50.58 brlcad are you saying you made 'push' without -x behave that way?
14:51.03 Ch3ck_ yes.
14:51.06 brlcad if so, how's that different from push -x ?
14:51.18 Ch3ck_ well its the same thing basically
14:51.29 Ch3ck_ then its preferable i remove the push -x
14:51.32 Ch3ck_ and leave it as push
14:51.33 brlcad so then you just made the old push command go away?
14:51.51 Ch3ck_ No the old push
14:51.51 brlcad s/command/functionality/
14:52.17 Ch3ck_ command is stil there but in a case where an object is detected to be moving in more than one direction
14:52.42 Ch3ck_ the push command calls a special pushx() routine which then pushes the object.
14:52.59 Ch3ck_ which is like xpush ing the object
14:53.46 Ch3ck_ so there will be no need for neither push -x nor xpush altogether
14:53.51 brlcad zero_level: I presume that is you crashing tools? :)
14:54.21 Ch3ck_ which I figure will be cleaner and easier for end-users who'll not need to remember so many commands
14:54.24 brlcad Ch3ck_: so on the surface that sounds good but it's also a HUGE change in behavior
14:54.42 brlcad at least for the use-cases where the previous push command was desirable over xpush
14:54.45 brlcad if any
14:55.25 Ch3ck_ well the old push command still stays in tact
14:55.46 Ch3ck_ but I added the ability for it to detect the special case of xpush and still do a push on it
14:55.53 brlcad not what you just said, you said it calls this xpush() routine when an object is duplicate-referenced
14:55.54 Ch3ck_ using the pushx() subroutine in push.c
14:56.30 Ch3ck_ well not xpush() pushx() which works like ged_xpush()
14:56.38 Ch3ck_ similar but not the same
14:56.39 *** join/#brlcad hickoryknoll (~hickorykn@66-118-151-70.static.sagonet.net)
14:56.40 Ch3ck_ actually
14:56.45 brlcad if I just run push() does it call pushx() or does a user have to specify an option?
14:57.01 Ch3ck_ if he does it'll work
14:57.09 Ch3ck_ and if the user does not do it'll still work\
14:57.17 brlcad that doesn't answer my question
14:57.39 brlcad if I just run ged_push(), does it call pushx() automatically when it detects duplciate reference or does a user have to specify an option?
14:57.49 Ch3ck_ yes
14:57.54 brlcad it's not a yes no question!
14:57.54 Ch3ck_ it calls automatically
14:58.06 Ch3ck_ Yes it can call automatically
14:58.22 brlcad so then that's a change in behavior
14:58.31 Ch3ck_ yeah
14:58.55 brlcad all the more emphasis on what starseeker was saying then
14:59.00 brlcad we don't just change things on users
14:59.04 brlcad that's the best way to lose users
14:59.20 Ch3ck_ so how do I proceed now
14:59.22 brlcad it can be changed, but the impact has to be inspected
14:59.30 Ch3ck_ ok
14:59.43 Ch3ck_ well since the aim was to merge both commands
14:59.46 brlcad this is a question you probably cannot answer, except maybe to try and start a discussion on the mailing list
14:59.56 brlcad NO
15:00.02 brlcad the aim was to get you commit access
15:00.06 brlcad through a set of simple patches
15:00.13 Ch3ck_ ok
15:00.27 brlcad merging push+xpush had the potential to be a reasonable set of patches
15:00.34 brlcad but not like this
15:01.04 Ch3ck_ So how best do i do it..
15:01.15 brlcad and the notion that you still do not understand why just further indicates the need for more patches
15:01.32 brlcad do you really not see how this could have been a set of patches?
15:01.38 brlcad instead of one big patch
15:01.43 Ch3ck_ I now see
15:02.02 Ch3ck_ I have made alot of changes and included in one big patch
15:02.28 Ch3ck_ which I could have made in a small set of incremental changes and uploaded small patches instead
15:02.34 Ch3ck_ thats the error I made
15:03.05 Ch3ck_ Well concerning commit access that's why i'm looking at the libbn
15:03.14 brlcad even if you had not changed push's default behavior, this could have been done step by step (and you would have had commit access more than a month ago)... :)
15:03.36 Ch3ck_ to see how I could optimise some of its routines.
15:03.49 brlcad do you know what a unit test is?
15:04.00 Ch3ck_ not really
15:04.03 brlcad okay
15:04.38 brlcad say I gave you a function, maybe even that pushx() function or really ANY single function
15:04.52 brlcad and I asked you to prove that the implementation is correct for all possible inputs
15:04.58 Ch3ck_ ok
15:05.16 brlcad so you write a little main() program ... and feed it all possible inputs
15:05.31 brlcad and check what you expect the value to be from what the function actually produces
15:05.38 brlcad that's basically a unit test
15:05.49 Ch3ck_ ok like the one I did for my_inverse routines..
15:05.53 brlcad not really
15:06.07 brlcad it's similar in the sense that it's a small program
15:06.19 brlcad but that program did not test for correct behavior
15:06.31 Ch3ck_ ok
15:06.31 brlcad it merely tested the last computed one to make sure it matched
15:06.58 brlcad unit tests should test all possible values without user having to inspect
15:07.31 brlcad what happens if I feed an array of 'inf' or 'nan' values or a mix of both to the inverse routine?
15:07.36 brlcad does it produce the right answer?
15:07.39 brlcad does it crash?
15:07.53 brlcad a unit test ideally answers those questions automatically
15:08.05 Ch3ck_ ok
15:08.20 *** join/#brlcad Izak_ (~Izak@195.24.220.16)
15:08.50 brlcad Ch3ck_: you're familiar with sscanf() I presume?
15:08.56 Ch3ck_ yes
15:09.07 brlcad we implement our own secure version of sscanf in LIBBU
15:09.26 brlcad and there's a unit test to make sure that our implementation behaves identically to the system libc scanf() implementation
15:09.34 brlcad see src/libbu/tests/bu_sscanf.c
15:09.45 Ch3ck_ ok
15:09.57 brlcad that's one extreme
15:10.20 brlcad in the same folder, you can see src/libbu/tests/bu_dirname.c which is a much more simple unit test that compares with libc's dirname() function
15:10.43 brlcad perhaps a better simple example to start with
15:10.49 Ch3ck_ ok
15:10.59 brlcad read both quickly just to get an idea
15:11.28 brlcad the complexity of the robustness requirements usually drives the complexity of the unit test
15:11.47 brlcad in bu_sscanf's case, it's a crazy complicated command so the test is crazy complicated
15:12.01 brlcad in bu_dirname's case, the function is very simple, so the test is simple
15:12.24 Ch3ck_ yes
15:12.26 brlcad libbn doesn't yet really have any unit tests
15:12.33 Ch3ck_ ok
15:12.47 Ch3ck_ So i'm to write some for libbn
15:12.49 Ch3ck_ right?
15:12.50 brlcad all of it's CURRENT testing is done at a very high level through what are called integration tests
15:13.08 brlcad we make sure outputs are what we expect
15:13.13 brlcad that would be good
15:13.13 brlcad Ch3ck_: you can make your patches be anything
15:13.18 brlcad the smaller the better
15:13.22 Ch3ck_ ok
15:13.35 brlcad the point is to demonstrate your ability to communicate, not get homework completed ... remember that
15:13.46 brlcad this is a communication problem
15:13.47 Ch3ck_ So i could write tests for basically most of the functions in say /src/libn/mat.c
15:13.48 brlcad not a code problem
15:14.02 brlcad I would suggest starting more simple actually
15:14.09 Ch3ck_ yes.. GSoC has taught me that.
15:14.15 brlcad you could do mat.c, but it's one of the biggest files in libbn
15:14.22 Ch3ck_ :) ok
15:14.57 Ch3ck_ So i'll start writing some unit tests to make sure most of the functions are actually doing what they're expected to do right?
15:15.10 brlcad sure
15:15.43 brlcad actually, I have a good one for you that is actually needed
15:15.47 brlcad test poly.c
15:15.48 Ch3ck_ ok thanks :) will get on that and make sure everyone is informed
15:15.49 Ch3ck_ ok
15:15.55 *** join/#brlcad caen23 (~caen23@92.83.175.255)
15:17.01 brlcad Ch3ck_: or src/librt/roots.c
15:17.29 brlcad Ch3ck_: when I say it's a communication problem, that doesn't mean spamming the mailing list with a lot of information about your progress
15:17.38 brlcad it means creaing a patch that tells a simple and clean story
15:17.46 brlcad a patch that conforms to our style
15:17.58 brlcad that is in "our language"
15:18.39 Ch3ck_ Yes :) I get it
15:18.58 Izak_ brlcad: i enjoy your sense of humour :)
15:19.26 brlcad I wasn't aware I had one ;)
15:19.38 Ch3ck_ nahh :) you really have..
15:27.02 Notify 03BRL-CAD:d_rossberg * 56307 (brlcad/trunk/doc/docbook/system/man1/en/CMakeLists.txt brlcad/trunk/src/conv/raw/CMakeLists.txt): apply Jonathan's patch from https://sourceforge.net/p/brlcad/patches/195/ adding a g-raw converter in response to the GCI task http://www.google-melange.com/gci/task/view/google/gci2012/7945223
15:27.40 brlcad woo hoo!
15:28.05 brlcad ejno: congrats
15:33.45 zero_level brlcad :on bz?
15:44.07 zero_level brlcad: rt tools ?
16:04.22 *** join/#brlcad kesha__ (~kesha@14.139.122.114)
16:09.52 *** join/#brlcad zero_level (~mohit@66-118-151-70.static.sagonet.net)
16:13.01 brlcad zero_level: yes, on .bz
16:13.47 brlcad and I see that it was actually Ch3ck_ with the crashes, not you
16:14.56 zero_level alright!
16:29.42 Notify 03BRL-CAD Wiki:KeshaSShah * 5865 /wiki/Patches: /* How to Submit a patch */
16:43.06 zero_level brlcad : I got the error.
16:43.26 zero_level http://blogs.adobe.com/flascc/2012/11/30/finding-multi-threading-bugs-with-gdb/
16:43.30 *** join/#brlcad caen23 (~caen23@92.85.90.139)
16:43.56 zero_level my writeline function allocates memory.
16:44.13 zero_level UCHAR -> Double conversion
16:44.30 zero_level and bu_malloc acquires the same semaphore.
16:44.37 zero_level BU_SEM_SYSCALL
16:45.35 zero_level gdb rocks.
16:47.17 Izak_ zero_level : sure it does :)
16:49.19 zero_level Izak_ : I lacked motivation initially.
16:50.46 Izak_ zero_level: understood :) have you closed the ticket you just applied ?
16:53.57 Notify 03BRL-CAD:mohitdaga * 56308 brlcad/trunk/src/libicv/fileformat.c: Free redundant memory in icv_image_writeline
16:56.28 zero_level brlcad : I am not sure which semaphore must be apt there.
16:56.46 zero_level at819 in viewedge.c
16:57.21 zero_level I wish to define another semaphore for icv activities
16:57.56 zero_level I mean there will be many cases where one might wish to writelines in parallel.
16:58.06 zero_level write pixels in parallel
16:59.15 zero_level or indeed do many image proessing tasks in parallel.
16:59.32 zero_level I think i have.
16:59.39 zero_level checks again.
16:59.48 zero_level Izak_
17:00.25 zero_level Izak_ : yes
17:00.40 zero_level ``Erik any suggestions regarding semaphore for ICV ?
17:00.44 Izak_ zero_level :Still shows status : open
17:01.42 zero_level Izak_ : http://sourceforge.net/p/brlcad/patches/218/
17:01.53 zero_level closed-accepted
17:02.01 Izak_ zero_level:seen it :) its closed :)
17:02.13 zero_level Izak_ thanks :-)
17:02.27 Izak_ thanks too :)
17:06.46 ``Erik zero_level: remove 'em and see... hit it with a multi-proc machine (like bz), I'll take a more meticulous look tomorrow
17:08.38 ``Erik in rt, each proc will try to address a single scanline, so lockless should be ok... in rtedge, you need just enough locking to guarantee that the previous scanline has had it's primary shot set done before the pixel value run is done... it might make sense to break it up so a pass of all depths is done, then the 'edge' algorithm is done on the result
17:10.46 brlcad zero_level: outstanding, that's probably your best accomplishment to date, figuring that out :)
17:11.06 brlcad makes perfect sense .. malloc also acquiring the lock
17:11.37 brlcad learning a debugger should be required first-year coding activity
17:12.52 brlcad zero_level: it SHOULD be possible to access libfb (fb_write() and friends) without semaphore locking .. why rtedge does it will require some rework/fixing
17:13.08 *** join/#brlcad mpictor (~mark@2601:d:b280:b5:d63d:7eff:fe2d:2505)
17:13.42 brlcad might require re-writing rtedge, but that's not that hard either
17:13.50 brlcad i've done it in a couple days before, we could do it again .. probably should just to fix some other issues
17:19.21 *** join/#brlcad hickoryknoll (~hickorykn@66-118-151-70.static.sagonet.net)
17:28.46 Notify 03BRL-CAD Wiki:IIIzzzaaakkk * 5866 /wiki/User:Izak/GSOC_2013_logs: /* From July 22th to July 27th */
17:31.24 zero_level brlcad : Its a bug i introduced. Wasted my two days. Can take that as the best accomplishments.
17:31.57 zero_level but yes in the meanwhile i learnt to learn new things.
17:32.14 zero_level correction/Can/Can't
17:32.50 zero_level ``Erik, brlcad : I suggest introducing a new semaphore. BU_SEM_ICV
17:33.08 zero_level among the list of semaphores in bu.h
17:34.05 Notify 03BRL-CAD Wiki:KeshaSShah * 5867 /wiki/User:KeshaSShah/GSoC13/Reports: /* Week 7 */
17:36.20 zero_level I will need guidance to rework on rtedge.
17:36.46 zero_level brlcad: We both can work together to fix issues.
17:37.14 zero_level But first we need to identify issues and a plan on how to handle them.
17:41.12 ``Erik education is valuable...
17:41.27 ``Erik new semaphore is probably a bad idea
17:41.35 zero_level alright.
17:41.59 Notify 03BRL-CAD Wiki:IIIzzzaaakkk * 5868 /wiki/User:Izak/GSOC_2013_logs: /* Mid-term Evaluation week */
17:42.07 zero_level but ``Erik writting in a memory buffer categorized as system semaphore ?
17:42.32 ``Erik could be... is there a reason to lock the memory writes?
17:42.44 zero_level dont know ?
17:43.48 Notify 03BRL-CAD Wiki:IIIzzzaaakkk * 5869 /wiki/User:Izak/GSOC_2013_logs: /* Mid-term Evaluation week */
17:43.50 ``Erik then you need to read/learn more :)
17:44.51 ``Erik how apropos.. just now in another channel: 13:44 < oGMo> C itself may complicate issues, though like wiht most things in C, if you can't determine it's safe you don't do it
17:47.37 zero_level ``Erik write.
17:47.50 zero_level oops!
17:49.10 zero_level ``Erik how do u think we shld aproach this issue now ?
17:51.19 zero_level was going through the log of this file. It turns out that the src had the semaphore from its existence.
17:53.06 zero_level ``Erik : apart from r27878 (by you). "spinlock to avoid scanlines being written out of order"
18:21.57 zero_level ``Erik ran rtedge on bz with -P100 option.
18:22.13 zero_level without semaphores.
18:22.24 zero_level turns out that it works fine.
18:22.31 zero_level check this
18:22.32 zero_level http://brlcad.org/~mohit/new.png
18:33.35 zero_level also ran with 10,20,30,40,100,500 threads
18:33.48 zero_level brlcad, ``Erik : results are identical
18:33.51 zero_level see this
18:33.59 zero_level http://brlcad.org/~mohit/rtedgeMP/
18:46.11 Notify 03BRL-CAD:mohitdaga * 56309 brlcad/trunk/src/rt/viewedge.c: Fixed bug of rtedge after applying modified icv. Apparently icv_image_writeline usage bu_mallo(..) which in turn acquires semaphore BU_SEM_SYSCALL. Thus there was a deadlock. After removing this semaphore tested on bz with 10,20,30,40,100,500 process and resultant image was identical and correct.
18:49.10 zero_level brlcad, ``Erik view.c also has similar semaphore
18:49.24 zero_level at line:571
18:55.58 brlcad zero_level: I was just doing to say that the bug is not specific to to rtedge
18:56.10 brlcad rt hangs as well once I put a full compile through its paces
18:57.02 zero_level brlcad : yes atleast rtedge is fixed now. :-)
18:57.13 zero_level lets move to next command in raytracer
18:57.37 zero_level I shld be able to fix them all
18:57.54 brlcad zero_level: it's not fixed
18:58.03 brlcad now rtedge crashes for me after your 56309
18:58.17 zero_level oops !!
18:58.25 zero_level how many process ?
18:58.39 zero_level can u run gdb?
18:58.43 zero_level ;)
18:59.08 zero_level on it ran perfectly alright .
18:59.45 zero_level ^bz it ran ..
19:00.33 brlcad the non-existence of a crash doesn't say anything about the existence of a problem
19:00.34 brlcad I need to run some more tests to make sure there aren't ancilliary affects involved
19:01.36 brlcad see if rt works for you after applying a similar change
19:01.36 zero_level logically its tue.
19:01.36 brlcad logically its mon.
19:01.36 zero_level brlcad : but i went to the logs to find out the origin of semaphores
19:01.37 zero_level *true.
19:02.38 zero_level brlcad : and as ``Erik wrote on the logs of r27878:- "spinlock to avoid scanlines being written out of order"
19:02.40 brlcad conceptually, it seems on the surface that it should work
19:03.17 zero_level so there shld be no issues of such kind with icv.
19:03.47 zero_level because icv uses pointer airthmetic to find the start of the scaline in the image_struct->data/
19:04.14 brlcad like I said, it should work
19:04.37 zero_level Although I am not sure about fb_write, where spinlock was originally introduced.
19:05.18 brlcad blocking around fb_write() is the fundamental issue, as that is platform specific -- you don't know what kind of libfb interface will be used
19:06.07 zero_level yes on 27 Jan 2007; ``Erik found that ;)
19:07.04 zero_level no 16 Mar 2007.
19:07.52 zero_level but we shldnt refrain from testing more result.
19:08.32 zero_level I am planning to test on more bigger images.
19:08.51 zero_level brlcad: can suggest some tests.
19:09.28 zero_level can ^you suggest
19:10.28 brlcad benchmark is a first pass test
19:10.37 brlcad "make benchmark" or just "benchmark" post-install
19:15.07 zero_level Fatal error.
19:16.58 zero_level I am testing that after removing semaphore from view.c
19:18.46 zero_level sees midterm evaluation is on at melange
19:21.17 zero_level brlcad : benchmark is producing results.
19:25.54 zero_level brlcad : In some time I should be able to send you benchmark results.
19:26.18 zero_level brlcad : I am running benchmark after removing semaphores from view.c

Generated by irclog2html.pl Modified by Tim Riker to work with infobot.