IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2012/05/27)2012/05/28 
saper well it assumes a certain model of perfecting single commits00:00.41 
  it's difficult to switch from "git is only making snapshots of directory trees" paradigm to "let's deal with patches now", something that cherry-pick and rebase try to bring back into git again00:01.42 
  Robin_Watts: I just compiled mupdf trunk with/OpenJPEG 1.2, adding this ... http://bugs.ghostscript.com/attachment.cgi?id=8626 (that's me)00:04.40 
sebras saper: why do you want to stay with an older version of OpenJPEG?00:05.42 
  I'm wondering since the same issue might arise with other libraries.00:06.16 
saper because that's what FreeBSD currently have00:06.22 
sebras like freetype, e.g.00:06.23 
saper (selfish)00:06.28 
  er, I lied. It's 1.300:07.12 
  on my system only mupdf and poppler depend on that, and therefore gimp and xsane; would not probably be too much pain to upgrade once it's in the ports three00:08.32 
  s,three,tree,00:08.37 
sebras I can see the problem. I know that tor8 catered for older versions of freetype for a while, so let's hope that he feels it worthwhile for OpenJPEG as well.00:10.10 
saper not a big change, only the palette problem for some files will remain broken if using older openjpeg00:11.32 
kens A new high for pdfwrite, an 'if' with 17 calls to functions in its tests.....10:00.44 
  Oh, and if it all succeeds, it executes a macro 'DO_NOTHING'10:01.18 
Robin_Watts oh, boy...10:06.15 
kens Has anyone forwwarded the latest email to support on to Scott ?10:06.35 
Robin_Watts http://www.ebuyer.com/344622-zoostorm-pentium-no-os-desktop-pc-7873-1057 <- tempted by this as a replacement for Helens PC10:07.43 
kens Hmm, tha'ts cheap10:08.54 
Robin_Watts less than 300 quid with Windows 7 Home Premium.10:09.04 
mace Robin_Watts: got a mo?11:49.36 
Robin_Watts Sure.11:50.31 
mace http://artifex.dsis.co.uk/ you still happy with the contrast etc?11:51.44 
Robin_Watts OOh, that looks much nicer since I last looked.11:52.09 
mace yeah i've rolled out all the other changes Miles requested11:53.08 
  the main one you're probably noticing is the partner solutions stuff11:53.43 
Robin_Watts I love the fade in on the Partner Solutions stuff.11:56.06 
  But, if you swap very quickly from one to another, you can be left with the old one 'faded in'.11:56.45 
mace yeah that has some rough edges at the moment - i wanted miles to see the effect first before i spend too much time finessing it11:57.24 
Robin_Watts Sure. But I like it.11:57.35 
mace goodo :)11:57.49 
Robin_Watts lunches12:07.38 
  kens, chrisl: You about ?13:10.25 
chrisl Robin_Watts: I'm here13:11.37 
Robin_Watts I had psdcmyk working on friday13:11.48 
  and now it's not.13:11.52 
  Do you have a recently updated gs tree you could run a quick test on for me please?13:12.04 
  psdrgb, I mean, sorry.13:12.36 
kens I'm here13:12.47 
  Hmm, let me see where I'm at13:12.59 
chrisl I'll just rebase/rebuild, then I can test....13:13.25 
kens OK I have Bug 693070 psdrgb wasn't giving corrupted output13:14.09 
  Is that new enough ?13:14.14 
Robin_Watts Indeed.13:14.17 
  That's perfect.13:14.20 
kens OK what's the test13:14.24 
  ?13:14.33 
Robin_Watts Just use psdrgb and tiger.eps and see if you get an image.13:14.44 
kens OK one sec13:14.49 
  Photoshop crawls into life....13:16.16 
  Its all black13:16.37 
Robin_Watts For me too :(13:16.45 
kens :(13:16.59 
Robin_Watts So either my testing was screwed, or... confused.13:17.15 
kens Checked the histogram the only colour is pure black13:17.22 
chrisl Hmm, patch fails.....13:18.45 
Robin_Watts sebras, tor8: So tor8 pushed sebras' patches already ?13:45.39 
  Is there a way in Acrobat to tell it to save a PDF not as a 1.7 file ?16:12.32 
kens I think so yes.16:12.42 
  In the save dialog is there a properties button ?16:12.51 
  Hmm, won't let me select it :-)16:13.20 
  Which version of Acrobat ?16:13.43 
Robin_Watts oh, d'oh. Let me look in Acrobat rather than Acrobat reader.16:13.53 
kens Oh well that might work better....16:14.04 
  The preflight will do it, but I'm not confident of its capabilitiews16:16.35 
Robin_Watts Tools => Optimise => v5 and later seems to do it.16:18.07 
kens Ah, fair enough16:18.14 
Robin_Watts Thanks.16:18.19 
kens NP16:18.22 
  After all I didn't do anything :)16:18.36 
  Is anyone au fait with parameter lists ? is Ray here yet ?16:24.34 
Robin_Watts I've sworn at them a bit, but I'm no expert.16:26.14 
  Isn't today Memorial Day ?16:26.25 
kens Could you look at some code quickly ?16:26.25 
Robin_Watts Sure.16:26.30 
kens gdevpsdp.c, line 28516:26.50 
Robin_Watts (i.e. I wouldn't be surprised if there was no ray or henrys today - not expecting mvrhel at least)16:26.59 
kens psdf_get_image_dict_params16:27.01 
  Didn't realise it was a pubnlic holiday16:27.15 
Robin_Watts I have it16:27.31 
sebras Robin_Watts: looks like it. I'm happy with the merge anyway. my current itch is the O(n^2) info gathering in mupdfinfo now.16:27.50 
kens OK what seems to be happening is that teh 'dict' is ending up in the list using somethign which gets freed, this causes a later seg fault or endless loop (memory gets reused)16:28.08 
  The code does 'param_begin_write_dict16:28.23 
  Which seems to read all the data into 'dict'16:28.40 
  THen if oplvalues is non NULL (it isn't)16:28.52 
  It copies it into plvalue16:28.58 
  All looks good16:29.03 
  Then it does param_end_write_dict16:29.13 
  and frees 'dict'16:29.19 
  I think that it is storing 'dict' in plist in param_end_write_dict16:29.44 
  And it shouldn't be, because that gets freed16:29.53 
  I *think* it should be storing plvalue instead16:30.08 
  But I've been banging my head on it all day and I doubt my understanding at this point16:30.27 
henrys kens:about ray ... it is a holiday not sure if he'll be in.16:30.35 
kens henys Robin_Watts told me, no problem16:30.48 
  didn't realise it was a holiday16:30.58 
Robin_Watts kens: OK, this is out of my comfort zone. Gimme a mo to try and understand what's going on.16:31.10 
kens OK I have to go put dinner on, be back in a minute16:31.42 
Robin_Watts kens: I'm not going to be able to grok this without spending some time in the debugger. Can you give me a command that exercises this?16:35.14 
kens OK16:35.40 
  -dNOGC -sDEVICE=ps2write -dCompressPages=false -dCompressFonts=false -sOutputFile="/temp/opentext/out.pdf" j:/tests/Bug691335.eps16:36.12 
  breakpoint on line 294, hit count of 239 I htink16:36.57 
Robin_Watts kens: Presumably you are approaching quitting time for the night ?16:37.00 
kens Yes, but I will be abck online this evening Stella has a governors meeting tonight16:37.24 
Robin_Watts I've just got my head in something else at the moment.16:37.30 
kens NP16:37.34 
Robin_Watts I was going to say can we look tomorrow?16:37.40 
kens Of course, and thanks16:37.48 
Robin_Watts sorry.16:37.52 
kens I'll pokie it with a stick some more later16:37.56 
  Off to do the rest of dinner now16:38.04 
ray_laptop kens: Robin_Watts: I saw the discussion about the dict param lists, but haven't tried to look into it. Unless you (ken) are going to be working on it tonight, I'd rather keep on with the cust 532 pdf14 optimizations.17:10.05 
  debugging a few issues with it and cleaning up code so that takes concentration.17:10.32 
Robin_Watts ray_laptop: I think ken may be back later. And the impression I got was that he'd like some guidance rather than to pass the problem off entirely.17:11.03 
ray_laptop Robin_Watts: right. So if I'm online and kens wants to have me look at it and see if I can spot anything, he can ping me here.17:11.55 
  kens: If you are diving into it tonight, and I'm not online, have henry or someone call me, or SMS me.17:12.55 
  Robin_Watts: BTW, did you text me on 5/24 ? (does your number end in 7642 ?)17:13.44 
Robin_Watts yes.17:13.54 
  and IIRC you appeared as requested and answered questions :)17:14.17 
ray_laptop Robin_Watts: OK. thanks. I'll add you to my contacts list so I'll be able to tell who it is.17:14.23 
  Robin_Watts: right. That's why I guessed it was you.17:14.38 
Robin_Watts pops to station. bbs.17:19.35 
gastaldi greetings !17:30.08 
  I am looking for a configuration to make PDF conversion into PNG images take less space but still be readable17:30.45 
  can anyone help me ?17:32.12 
  I am using the following flags: -dSAFER -dBATCH -dNOPAUSE -r150 -sDEVICE=png16m -dTextAlphaBits=4 -sOutputFile=page-%03d.png17:32.25 
ray_laptop even small text should be legible with AA at 150 dpi.17:47.39 
  kens: what I see with your test is that it is hanging in gs_c_param_list_release because it has a "loop" in the chain of plists: 958->908->8b8->868->95817:58.51 
  kens: is that what you are working on ?17:59.00 
kens ray_laptop : yes that's the problem18:15.16 
  However, teh *cause* seems to be that the 'dict' has been freed, and then reused.18:15.39 
  ray_laptop : I'm going to look more tomorrow, so don't worry about it, enjoy your holiday.18:16.15 
ray_laptop kens: OK. So I am seeing the "GrayImageDict" value.d has a loop in it: 8b8->908->958->628->628 Once it frees the one at 628 we are looking at freed memory when we access pparam->next at the top of the while loop18:17.58 
  kens: on entry, the plist->count is 4, but it continues (due to the self-referencing) to decrement past 0 to 0xffffffff18:19.44 
kens ray_laptop : the 'source' of the problem seems to me to be the list which is placed inside the parms list. The representation of the Gray (or in my case Mono) image dict18:20.30 
ray_laptop kens: so the problem is the "next" pointer in that 4th element18:21.07 
kens When I follow the main list from the head, I see that the subsidiary list representing the dict has hte address of the 'dict' local variable allocated in psdf_get_image_dict_params18:21.20 
  The problem is that that 'dict' is then freed, leaving in essence a dangling pointer.18:21.38 
  When we next allocate some memory we reuse that 'dict' memory and so the self-referencing loop occurs.18:22.05 
  It varies with the memory layout18:22.14 
  In one configuration it caused a crash (seg fault) rather than a loop18:22.34 
  My current code has the problem with MonoImageDict instead of GrayImageDict18:22.50 
  My question really is if you look at line 300 of gdevpsdp.c:18:23.30 
  param_end_write_dict(plist, pname, &dict);18:23.30 
ray_laptop kens: not surprising that it would cause a segfault since we are de-referencing freed memory.18:23.41 
kens Is that what puts the 'dict' parameter into the 'plist' ?18:23.45 
  ray_laptop : yes, the loop is perhaps more surprsing :-)18:23.57 
  This is a hazy area for me18:24.11 
  I'm not sure where the child list is being inserted into the parent18:24.30 
  But if we really are inserting a list, and then freeing it, we are really in trouble :)18:25.03 
  ray_laptop : I did trace through this, with a memory write breakpoint18:25.42 
  THe 'next' pointer in the dict is initially created with a NULL, so it does terminate the list18:26.01 
  But of course the allocation which uses the same memory overwrites it.18:26.23 
  THat's where the problem occurs, as far as I can see18:26.33 
  Am I making sense or just confusing you?18:26.44 
ray_laptop kens: sorry -- lost trying to trace the macro hell of line 300: param_end_write_dict(plist, pname, &dict);18:27.31 
  kens: is that the line 300 for you ?18:28.04 
kens Yes, that's the beastie18:28.40 
  THe problem is (I think) that we end up putting 'dict' into the plist18:28.57 
  But in the lilnes immediately following that, we free 'dict'18:29.11 
  To be more accurate, we put dict.list into plist, then release dict.list and freee dict.list18:29.35 
  I'm currently in c_param_wite and I see the address of 'pvalue' is the list pointer 'dict.list'18:30.38 
  We make a new param 'MonoImageDict' (Will be GreyImageDict for you)18:31.24 
  And tehn set param->value to be 'pvalue'18:31.37 
  SO indeed it appears we put a pointer into the list, and then we go ahead and free the pointer18:31.51 
  I notice that if its not 'peristent' we should copy it.18:32.33 
  But the type is '11' and so we don't18:32.51 
  11 seems to be gs_param_type_dict18:33.29 
  Which makes sense18:33.33 
  For what its worth, pparam->value.s.persistent is 0, so it isn't persistent, but we don't copy it.18:34.55 
  I wonder why we don't copy dictionaries.18:35.03 
  I also wonder how this ever works....18:36.04 
ray_laptop kens: I really don't know what the 'rules' are, but that doesn't seem to make sense. Let me check the docs and other uses....18:36.20 
kens OK, you know more about it than I do18:37.00 
  ray_laptop : I know its a holiday, so feel free to head off and have fun, we can do this another time18:37.54 
ray_laptop kens: actually, what I am doing is debug on cust 532 changes, but I'm in it now, so I'll keep at it for a bit (unless you need to quit)18:39.05 
kens No, Stella is at a school governors meeting, so I have time on my hands18:39.59 
ray_laptop kens: in c_param_begin_write_collection it calls gs_c_param_list_write which sets 'persistent = true'18:45.47 
kens Hmm, it does ?18:46.13 
  Hang on18:46.17 
  I#'ll have to restart to get there18:46.34 
ray_laptop I'm just looking at the code statically18:46.58 
kens Is that called form param_begin_write_dict ?18:47.01 
  Oh, I see18:47.06 
  OK I do get into that code18:47.16 
ray_laptop kens: yes, param_begin_write_dict is a macro that calls the begin_xmit proc18:47.50 
kens I see it sets persistent_keys, is that the same thing ?18:48.01 
ray_laptop kens: oops. I misread that.18:49.23 
kens pparam->key.persistent is true18:50.24 
  THe 'value' associated with the key comes from teh dict.list we created though, and it seems to be 018:51.13 
  sorry, its 'persistent' member seems to be 018:51.28 
  Tracking back the data comes fomr pdev->params, and all the composite members have a persitent member of 019:00.28 
ray_laptop kens: so c_param_write calls c_param_add is the function that does the allocation when it does the. c_param_add takes care of allocating the 'key' based on persistent_keys. then c_param_write does the alloc of the 'value'19:11.29 
kens Yes, exactly what I see19:12.00 
  THe keys are persistent, so that's OK, but it just copies the 'pvalue' across19:12.15 
  If ti was an array it would 'deep copy' it (pvalue->...persistent = 0), but because its a dictionary, it doesn't.19:13.06 
ray_laptop kens: Really ? I am looking at line 296 in gscparam.c19:13.09 
kens Maybe I'm not looking at the same code, just a moment19:13.22 
  I don't get to line 296 with this19:13.42 
  The 'type' is 11 (dictionary) so it doesn't copy it.19:14.02 
  line 296 seems to be copying arrays, dicts, names and strings19:14.27 
  My call stack is:19:16.11 
  c_param_write19:16.12 
  c_param_end_write_collection19:16.12 
  psdf_get_image_dict_param19:16.12 
  psdf_get_image_params19:16.12 
ray_laptop kens: let me set the BP count for the copy to 239 and see what I see.19:19.17 
kens ray_laptop : I'm not sure that will work for you19:19.32 
  My code is subtly different and gets the same error in a different place19:19.50 
  You will probably need a smaller hit count19:19.59 
ray_laptop kens: 239 is 'GrayImageDict' -- what name are you seeing ?19:20.01 
kens MonoImageDict19:20.09 
  Let me check my hit count19:20.22 
  Actually I am seeing GrayImageDict19:20.56 
  This one doesn't go wrong of rme, but I set it that way to be the same as you and Robin19:21.11 
  So its fine19:21.15 
kens is getting tired....19:23.01 
ray_laptop kens: me too. I may poke at it a bit more (but no promises). I'll post anything here or in an email to tech...19:28.13 
kens OK thanks ray_laptop19:31.45 
  Off for the night, goodnight anyone who is still here19:37.56 
Robin_Watts night kens19:38.02 
 Forward 1 day (to 2012/05/29)>>> 
ghostscript.com
Search: