Log of #mupdf at irc.freenode.net.

Search:
 <<<Back 1 day (to 2020/10/19)Fwd 1 day (to 2020/10/21)>>>20201020 
malc_ recursive cloning github's mupdf repository eventually leads to - Cloning into '/home/malc/xsrc/llpp/build-test/mupdf/thirdparty/leptonica'...00:07.14 
  Username for 'https://github.com':00:07.14 
  00:07.15 
  and this fails non-interactive scripts00:07.57 
user38 Greetings everyone.05:09.42 
sebras user38: welcome back.05:51.25 
user38 Thank you kindly. Per https://bugs.ghostscript.com/show_bug.cgi?id=703004#c7, I'm preparing 1.18.0 for building.05:52.08 
sebras user38: ok.05:52.37 
malc_ is excited and holds his breath... really06:16.14 
  great06:37.42 
user38 I got kicked out with "invalid captcha". No idea why. Anyway, the build blew up thus:08:18.25 
  > gmake CC=gcc CXX=g++08:18.48 
  LINK build/release/scripts/hexdump.exe08:18.51 
  ld: fatal: unrecognized option '--'08:19.01 
  gmake: *** [Makefile:76: build/release/scripts/hexdump.exe] Error 108:19.16 
  looks like a GNU ld(1) hard-coded --long-option in the Makefile, have to investigate further.08:19.46 
malc_ user38: you are on a mac with llld?08:20.45 
user38 Solaris 10.08:22.44 
  AT&T SVR4 ld(1).08:22.56 
malc_ ah so surs linker08:22.57 
  user38: "gmake [..] verbose=yes" can help08:23.26 
user38 Ah! The rejected patch chunk is a clue:08:25.22 
  LDFLAGS += -g -rdynamic08:26.08 
  -rdynamic is a linker-specific option.08:26.37 
  And every linker impements it differently.08:26.52 
  s/impements/implements/08:26.58 
  -pg also.08:27.22 
  I'll have to look at this closer before I can proceed.08:27.39 
  ifeq ($(OS),MACOS) -- where is "MACOS" set, respectively if I do the following, will it work:08:36.21 
  ifeq ($(OS),SUNOS) <- will that work?08:36.46 
  Ah, I found it, it's just uname(1). So the string should be "SunOS", not "SUNOS"...08:37.51 
Robin_Watts user38: So, did that allow you to build 1.18?11:25.27 
user38 I had to take a detour down the rabbit hole... working my way upwards now.11:49.11 
  It all started with the UltraSPARC T1 being too slow, and snowballed from there.11:49.42 
  Was trying to put together patches and the source in a coherent whole, xz(1) on an UltraSPARC T1 is an exercise in patience.11:50.39 
ator xz is an exercise in patience on *any* machine...11:54.24 
user38 But the compression it squeezes out of files is unbeatable. I found a way to speed it up for transient work: xz -9e -T0 --block-size=1m ... but that sacrifices compressed file's size significantly.11:59.28 
  Okay, all the patches I made for 1.17.0 apply cleanly to 1.18.0 now; compiling...12:01.44 
  Does Artifex have any Solaris systems in-house?12:02.21 
chrisl user38: "Artifex" does not. I have my own Solaris/SPARC box, but it's very old and slow12:06.14 
user38 So how do you get it to compile on Solaris, where the Linux timegm(3) function does not exist?12:07.04 
chrisl I don't work on mupdf.... I work on ghostscript12:07.24 
user38 That explains that then.12:08.26 
chrisl And Oracle are not very helpful where the more modern SPARC hardware and Solaris environment are concerned12:10.36 
user38 That's because they're Snoracle.12:10.55 
  Also Solaris 11 changed way too many things way too radically, so most of us Solaris people abandoned it for a some illumos distribution variant. Solaris 10 is the last good Solaris.12:12.06 
  s/a some/some/g12:12.18 
chrisl I have 10 and 9 in a container. Actually, my Solaris machine is probably not much slower than your T1 powered one12:13.41 
  user38: If the latest patches you're testing still have problems, I'll crank the handle on my machine, and work with Robin_Watts on getting the wrinkles ironed out.12:15.17 
Robin_Watts user38: If you have patches to improve buildability on Solaris, please let us know!12:16.30 
user38 I was going to discuss this with you after this action is successfully closed, how you would like those... in another bug report or by some other venue perhaps?12:17.27 
Robin_Watts A bug report is probably the simplest, cos it means that all of us can see them.12:19.00 
Robin_Watts grabs lunch. bbs.12:19.29 
user38 I would think so too, although in the interest of being completely open and fair, I'm telling you in advance, be prepared to cherry-pick the Solaris fixes from my patches... When I embarked on porting MuPDF to Solaris, I knew literally nothing about the build engine, so my patches are written based on my reverse engineering of the MuPDF's build12:21.34 
  system, and designed to get me over the line building and working on Solaris.12:21.35 
Robin_Watts lunch denied :(12:23.08 
  user38: Sure.12:23.17 
user38 Okay, 1.18.0 built!12:24.21 
  Now let's see how we fare...12:24.29 
  So, 32-bit, same as before: a simple test PDF without graphics renders in a window without decorations(!), a more complex PDF with graphics makes it core dump with a bus error, same as before.12:27.17 
  Now on to building 64-bit...12:27.24 
Robin_Watts ok, so once you've done with 64bit, if you could do a 32bit debug build, run that, and catch it in a debugger when it dies.12:34.10 
  ator: https://git.ghostscript.com/?p=user/robin/mupdf.git;a=commitdiff;h=6292d6d3b20ab450d59de7d0c25a7b5924b0c60012:34.39 
  ator, sebras: Actually, better comments/commit message: https://git.ghostscript.com/?p=user/robin/mupdf.git;a=commitdiff;h=bb1cb69d1cd2d87137b153dfd12e4c787fb545a712:38.06 
user38 mupdf-x11 ~/RESOURCE.PDF12:41.19 
  ximage: disabling shared memory extension: BadAccess (attempt to access private resource denied)12:41.48 
  not sure what that ximage message is all about (it was always there, from the beginning), but other than that, mupdf-x11 seems to work, although the window is also without decorations or any other controls.12:42.38 
  mupdf-gl ~/RESOURCE.PDFBus error (core dumped)12:43.06 
Robin_Watts So the 64bit version works ok for mupdf-x11, but not for mupdf-gl ?12:46.14 
ator mupdf-x11 has no UI elements like buttons or menus, it's purely mouse and keyboard driven12:46.16 
  the ximage warning is just saying that it couldn't use the XShm extension to speed up copying images to screen12:46.46 
  mupdf-gl crashing -- probably a bug in the opengl driver or related? a stack trace would help.12:47.16 
user38 That is correct: 64-bit mupdf-x11 works now, 64-bit mupdf-gl still crashes (it never worked to begin with on the sparc platform).12:47.21 
  Let me see what I can glean out of the core file...12:47.56 
ator you might need to use the mesa software driver for mupdf-gl; I would not be surprised if the Sun's opengl implementation has bitrotted to the point of not working12:48.19 
  it never was very good, even back in the late 90's early 00's when I last had to use it12:48.51 
clam ator: what wasn't? mesa's dri on sparc?12:49.59 
user38 As far as I am aware, there is no MESA OpenGL implementation on the sparc platform.12:50.05 
ator clam: sun/solaris own proprietary opengl implementation. it always threw hissyfits when you tried to make it do textures...12:50.33 
  user38: I thought (but could very well be mistaken) that mesa had a pure software pipeline that worked on any X11 display12:51.04 
clam ator: hmm okay, i only had experience with sparcs x11, some of my x11 code had a bug that only manifested itself there, took blueswirl adding sparc support to qemu for me to debug it, the quick time (an hour?) i had with ultraspark in UIB in .no wasn't enough12:52.35 
  ator: sure12:52.50 
  ator: good luck bulding it though12:52.57 
  *building12:53.32 
ator Robin_Watts: pad_size_for_pointer only pads to multiple of 2 (not 8 as I would've expected)12:54.14 
clam anywho i think mupdf-gl on soaris/sparc just wouldn't work or will require gargantuan effort... just a hunch though12:54.16 
Robin_Watts ator: size is in uint32_t's.12:54.31 
ator clam: yeah, I'm not going to waste time of it12:54.34 
  Robin_Watts: ah.12:54.37 
Robin_Watts user38: so I reckon we should concentrate on making 32bit mupdf-x11 work.12:55.23 
ator if (ptr & 4) you're going to have to explain that one to me like I'm five years old12:55.28 
Robin_Watts (or, equivalently, 32bit mutool draw)12:55.34 
clam & _4_12:55.50 
Robin_Watts if (ptr & 4) then the address is not 64bit aligned.12:56.05 
clam joins the 5yo club12:56.08 
Robin_Watts (we know the address will be 32bit aligned, hence it'll always have ptr &3 == 0.12:56.25 
  but if ptr &4 then it's 32bit, but not 64bit aligned.12:56.39 
  so by adding 4 we bump it to the next 64bit alignment.12:56.53 
clam Robin_Watts: &7 would make the intention less hard to see through, no?12:56.58 
ator can we not use &7 ? but then we can't just add12:57.10 
clam 5yos FTW!12:57.23 
Robin_Watts We could, but as you say, we'd then need to do: ptr = (ptr+7)&~7;12:57.53 
  We'd lose the if, but gain complexity.12:58.04 
  My choice would be what I wrote originally.12:58.24 
user38 @Robin_Watts: that's a plan. Should you wish to get the mupdf-gl working in the future, Alan Coopersmith from Oracle is the contact person for all things X11 and OpenGL on Solaris. He is (or was at least) in charge of porting and maintaining X and OpenGL on that operating system. @alanc on "Twitter".12:58.49 
Robin_Watts does not use Twitter, on principle.12:59.08 
user38 At least you have a name and both of you use e-mail.12:59.28 
user38 shrugs12:59.46 
Robin_Watts Yeah, thanks.12:59.52 
ator Robin_Watts: but you use facebook? Hypocrite! :P12:59.52 
Robin_Watts ator: facebook's model is "Here is stuff I've splashed upon a wall for my friends to read."13:00.15 
clam doesn't use twitter because that means turning on js13:00.33 
Robin_Watts Twitter's model is "Every asshole gets a megaphone and a roof to stand on."13:00.38 
  but anyway...13:01.17 
Robin_Watts is finally allowed to get lunch. bbs.13:02.04 
clam Robin_Watts: i've watched the SP episode where Cartman is forced to quit twitter few hours ago...13:02.31 
Robin_Watts user38: If you can get a backtrace from "mutool draw -o out.png whatever.pdf" where it crashes, that'd be great. thanks.13:02.45 
  (from a debug build)13:02.54 
user38 I believe that on 32-bit, you should be okay with aligning on 32-bit boundaries, since the (Ultra)SPARC processors are natively 32-bit, even when they support 64-bit addressing and instructions.13:02.58 
  Let me see if I can get a build=debug out of it.13:03.29 
  We're going 32-bit build=debug now, correct?13:04.38 
Robin_Watts please.13:06.05 
user38 Gladly.13:08.23 
  I think my patches broke your debug build, and this is why I think that: gcc -fPIC -mno-app-regs -O3 -ffunction-sections -fdata-sections -Wsign-compare -pipe -g13:18.44 
  ...by the by, what does "fitz" stand for?13:25.45 
kens user38 I don't think its stands for anything in particular13:29.57 
  It was originally inteded (AIUI) to be a replacement graphics library for Ghostscript.13:30.16 
  But it never got used for that, and Tor used it for MuPDF13:30.32 
  Beyond that I'm unsure as it predates my involvement13:30.47 
user38 Such bits of history are always salient to me.13:33.47 
ator originally intended to be the new graphics library for ghostscript, based on raph levien's "libart" project13:34.28 
  a son-of-ghostscript+libart project, hence the "fitz" name13:34.43 
  I used it for mupdf, but the project to replace the graphics library in ghostscript fizzled out13:35.10 
  and I used it for mupdf because we at the time wanted a smaller project to test it with than integrating with ghostscript13:35.49 
  and the first implementation of mupdf (back from 2002-ish) used libart as the renderer13:36.20 
user38 Like puzzle pieces... fascinating.13:37.57 
  AR build/release/libmupdf.a13:38.23 
  that's how far it came with build=debug... seems to be much slower. My guess is because of -O3.13:38.58 
malc_ ator: the "son of ... hence" does not make sense to me, my mind refuses to make a connection13:39.17 
  user38:13:39.39 
  damn13:39.43 
  user38: -O3 in debug??13:39.51 
user38 I can't say I get the son of ghostscript reference, as I've no context.13:40.20 
kens Fitz as a surname denotes 'son of'13:40.21 
user38 In which language?13:40.31 
kens Like 'son' or 'sen' in Swedish/Danish, or 'Mc' in Scottish or 'O' in Irish13:40.43 
user38 I never knew that.13:40.59 
kens I'm not sure which language fitz is in,its used in Norman names in England13:41.09 
  Norman = from Normandy13:41.16 
  in France13:41.22 
malc_ i always suspected that tor is sikrittly a scott13:41.23 
user38 Well now it all makes sense.13:41.49 
ator malc_: old french, same word stem as "fils" (boy)13:41.51 
kens Ah Wikipedia says its Old French13:42.09 
malc_ ator: just yesterday i watched SP and there was a breton song at the end, loved the thing...13:42.56 
ator kens: Well, Normans spoke old french :)13:43.27 
malc_ and i recall vangelis having a song called 'la petite file a la mer' or something but there file means girl13:43.41 
  FTS basically13:43.47 
kens Yeah which is why I mentioned it, I just wasn't sure enough to say that without checking13:43.48 
ator and consequently most of british nobility for a couple of centuries...13:43.50 
kens Nah we have Germans now13:43.58 
ator malc_: fille is girl/daughter, fils is son13:44.47 
malc_ kens: may i remid you that you are sottish ... and those germans are yours only through marriage13:45.04 
  ator: tack!13:45.15 
kens Indeed they are, I never said otherwise :-)13:45.32 
  Especially since I actually live in England13:45.43 
ator kens: I got the new Britannia board game from kickstarter the other day... but I doubt I'll be able to play it this year :(13:46.05 
kens Hmm, don't know that one let me look13:46.22 
  But yeah,cancelled all gaming for now :-(13:46.46 
  First published in 1986, wow.... old game13:47.07 
ator it's an oldie, been out of print for a while13:47.14 
kens 4 hours to complete, oof13:47.39 
ator kens: that's if you play quickly! first time I played I think we were at it for 6+ hours13:47.56 
kens Yeah I was assuming that it would really be longer13:48.11 
malc_ nerd alert13:48.11 
ator malc_: you're on IRC, that should be alert enough!13:48.28 
malc_ hah :)13:48.36 
kens :-)13:48.45 
ator kens: just got to thinking about it when talking about all the peoples who came and went through britain13:49.23 
kens Yes, I can see why from the description13:49.35 
  covers a load of history13:49.46 
malc_ before celtic scandinavian roman and germanic barbars invaded it was such a lovely island... https://www.youtube.com/watch?v=2TR0gaG01do told me so13:54.28 
ator malc_: wasn't even an island if you go back a bit ... https://en.wikipedia.org/wiki/Doggerland13:56.36 
malc_ ator: we can go even further to the Pangea time while at it :)13:57.21 
ator well, 6000bc is just barely prehistory13:57.59 
kens It looks fairly Celtic13:58.38 
malc_ ator: true that13:58.48 
kens Oh, supposed to be Pictish13:58.55 
malc_ kens: yep13:59.00 
ator don't trust games (and definitely not hollywood) on historic costumes13:59.18 
malc_ the whole blood bath that scotts was immortalized in Stevensons(sp) poem13:59.31 
ator they put mel gibson in pictish blue paint for something that was supposed to happen in the 14th century13:59.41 
kens wikipedia says set in late 8th century, so not Pictish then IIRC13:59.42 
malc_ ator: they?14:00.07 
  i beth those were jews ambushing poor mel14:00.23 
ator someone involved in braveheart.14:00.28 
malc_ also William Wallace marries Anna Karenina... and that does not sit well with me14:01.12 
  that said, i loved the movie when it first came out14:01.25 
  s;married;had an illicit affair14:01.58 
  ator: btw have you seen my artifex github mirror submodule comment yesterday?14:05.17 
Robin_Watts user38: -O3 for a debug build is bad.14:05.43 
ator malc_: no14:12.28 
user38 Yes, it's suboptimal for a debug build.14:13.10 
malc_ ator: gist: recursive clone form github bails14:13.11 
  from ghostscript - works14:13.36 
user38 Unless the source code is designed to emit extra information to stderr or stdout, I hadn't looked at it that closely?14:13.42 
ator malc_: Robin_Watts: chrisl: ah, probably those tesseract submodules that haven't been taken up by the artifexsoftware github clone14:14.14 
malc_ ator: yep14:14.28 
Robin_Watts ator: yeah.14:14.28 
user38 LINK build/release/mupdf-gl14:24.25 
  ld: fatal: library -lX: not found14:24.35 
  ld: fatal: library -lXrandr: not found14:24.43 
  ld: fatal: file processing errors. No output written to build/release/mupdf-gl14:24.58 
  so, it looks like build-debug is a no-go.14:25.25 
  s/-debug/=debug/14:25.36 
  but if you can confirm to me that when make build=debug does not turn on extra telemetry output in the program, I can tell my build system to build for debugging, which will build with -O0 -g -g3 et cetera.14:26.49 
  s/when make/make/14:27.45 
Robin_Watts user38: WHy not just build mutool?14:28.35 
  That avoids all the X bullshit.14:28.48 
user38 Because I don't know how.14:28.50 
  Which target should I supply to make?14:29.20 
Robin_Watts I'll check. just a mo.14:29.29 
  make build/debug/mutool build=debug14:30.20 
user38 That's still compiling with -O3.14:31.39 
  Probably due to the way I modified the build system.14:31.53 
Robin_Watts I have a zoom meeting now :(14:32.09 
user38 No worries. I'll let it build and come back to it later as well.14:32.54 
ator user38: or just "make tools"14:34.05 
  user38: the compiler flags for each build configuration are set in Makerules14:35.10 
user38 ld: fatal: file processing errors. No output written to build/release/mupdf-gl15:42.27 
  It still still tried to build a release version of everything.15:42.44 
  But that's okay, I don't want that distracting us. I'll tell my build system to build a debug version of mutool.15:43.37 
ator "make build=release tools" should *not* be trying to build mupdf-gl15:44.04 
user38 I did not run that yet.15:45.34 
malc_ Thread 6 "llpp.bin" received signal SIGSEGV, Segmentation fault.15:47.09 
  [Switching to Thread 0x7fffed50e640 (LWP 144731)]15:47.09 
  0x0000555555651968 in fz_walk_path ()15:47.09 
  (gdb)15:47.09 
  15:47.12 
  and that's on vanilla amd6415:47.21 
user38 Okay, so I changed build=release and the target to tools; but I also told my build system to build for debugging and thus,15:48.44 
  gcc -fPIC -mno-app-regs -O0 -feliminate-dwarf2-dups -grecord-gcc-switches -DDEBUG -g -g3 -ggdb -fvar-tracking -fvar-tracking-assignments15:48.50 
  ld: fatal: file processing errors. No output written to build/release/mupdf-gl16:04.10 
  ...interesting.16:04.15 
  That should not have broken at all. Must have missed "a spot" when forward-porting my patches.16:04.38 
  For some reason, the MuPDF build engine is ignoring X11_LIBS being passed in. I'll have to investigate this further. That is the cause of the linking errors.16:09.24 
  Ah, but the tools target has been built after all.16:12.10 
  so running mutool draw -o out.png document.pdf produces:16:18.13 
  status: process terminated by SIGBUS (Bus Error)16:18.21 
  > $ccmsSetAdaptationState+0x34(254e6d0, bff00000, 0, 2550150, 401a, 1)16:18.41 
  cmsSetAdaptationState+0x34(254e6d0, bff00000, 0, 2550150, 401a, 1)16:18.56 
  is at the top of the stack in the core dump.16:19.06 
  And also as before, if I run mutool on the one page PDF which contains no graphics, it generates out.png.16:21.24 
malc_ ator, Robin_Watts, sebras: https://tpaste.us/jnDK16:39.32 
sebras malc_: that doesn't look good, I'm assuming this is fallout of Robin's patch..?16:40.22 
malc_ user38: i can reproduce and debug path thing (probably related to yours) on a vanilla amd6416:40.23 
  sebras: guess so yeah16:40.39 
  https://www.boblycat.org/~malc/scratch/text.html is the source file16:44.52 
  nuc:/tmp16:45.00 
  - ~/x/rcs/git/mupdf/build/debug/mupdf-x11 ~/.cache/llpp/fonts/text.html16:45.00 
  mupdf-x11: source/fitz/path.c:152: fz_packed_path_size: Assertion `"This never happens" == NULL' failed.16:45.00 
  zsh: abort (core dumped) ~/x/rcs/git/mupdf/build/debug/mupdf-x11 ~/.cache/llpp/fonts/text.html16:45.00 
  16:45.03 
  so llpp is just a bystander16:45.08 
Robin_Watts malc_: That's probably something getting out of step between writing and reading of the display list w.r.t. padding.16:51.06 
  I'll look into it.16:51.12 
malc_ confirmed, resetting mupdfs git to the version just prior Robins commit fixes things16:51.15 
  Robin_Watts: fab16:51.29 
user38 Is the vanilla amd64 running a GNU/Linux OS variant?16:51.39 
malc_ user38: yes16:51.48 
user38 I am surprised by this.16:52.01 
Robin_Watts user38: I need a debug backtrace with line numbers etc as a minimum.16:52.05 
malc_ user38: and please prefix your messages with the nick of the person whom you are addressing, this makes notifications possible16:52.24 
user38 malc_: like so?16:52.47 
malc_ user38: yes, thank you16:52.56 
user38 Do regular IRC II /COMMANDS work with this web IRC client16:53.35 
  ?16:53.38 
  Oh! They do!16:53.59 
  Robin_Watts: source code line numbers?16:55.15 
  Robin_Watts: 0x003289ec in cmsSetAdaptationState (ContextID=0x254e6d0, d=-1) at thirdparty/lcms2/src/cmsxform.c:6716:57.07 
Robin_Watts user38: Right, so is the backtrace somewhere? (Sorry, I'm being pulled about 8 different ways at the moment)17:01.07 
  user38: It's in the bug. gottit. ta.17:01.33 
user38 RobinWatts, is that stack trace what you want though?17:02.12 
  Robin_Watts, is that stack trace what you want though?17:02.41 
Robin_Watts If that's where it's SEGVing, yes.17:03.33 
  though I am confused.17:03.38 
  FOr me, line 67 is: if (d >= 0.0) {17:03.56 
  which doesn't involve a memory access.17:04.10 
user38 For me as well.17:04.11 
Robin_Watts What is the value of ptr ?17:04.32 
user38 $1 = (_cmsAdaptationStateChunkType *) 0x254f16c17:05.27 
  The IRC client turned * ) into a smiley...17:06.04 
  $1 = (_cmsAdaptationStateChunkType * ) 0x254f16c17:06.28 
  Robin_Watts, is there something else I could provide before I check out for the night?17:09.43 
chrisl Robin_Watts: You might need to also be setting CMS_PTR_ALIGNMENT for the benefit of lcms2mt17:10.14 
  It defaults to "sizeof(void *)"17:10.28 
Robin_Watts chrisl: Is that not enough?17:10.43 
  What do we set it to for gs?17:10.48 
chrisl It's not enough on SPARC, no17:11.10 
Robin_Watts user38: OK, so that's supposed to be a pointer to a 64bit float, so clearly that's badly aligned.17:11.16 
chrisl With gs, building for sparc, we force CMS_PTR_ALIGNMENT to 817:11.41 
Robin_Watts user38: So you could try building with CMS_PTR_ALIGNMENT 8 tomorrow :)17:12.06 
  chrisl: Thanks.17:12.21 
chrisl NP. I'll crank my machine up in the morning, and have a poke at it. No way I can face it just now....17:13.00 
malc_ Robin_Watts: do you not see segfault on windows?17:13.03 
chrisl (If I remember)17:13.15 
Robin_Watts malc_: I have about 8 different people pulling me to do different things at the moment. I haven't yet had a chance to look.17:13.30 
malc_ Robin_Watts: sorry, nice number though17:14.14 
user38 Robin_Watts: I shall do that, then check in here tomorrow morning my time.17:15.30 
Robin_Watts user38: Thanks. What timezone are you in?17:15.45 
user38 Robin_Watts: CET. You?17:16.07 
Robin_Watts UK, so close.17:16.13 
user38 Robin_Watts: I'm UTC+2 right now. Been at it non-stop since 06:38 this morning, so I'm a little worn out.17:17.17 
Robin_Watts I understand.17:18.33 
user38 Thank you for all your support so far, and I wish you all a pleasant evening (or the rest of the day, which time zone you are in).17:20.01 
 <<<Back 1 day (to 2020/10/19)Forward 1 day (to 2020/10/21)>>> 
ghostscript.com #ghostscript
Search: