Comments (15)
What's the output from the tiffinfo command for your image?
from iipsrv.
https://gist.github.com/atomotic/29b12d9b0643b1696b06
from iipsrv.
OK, so it's tiled, but it's not multi-resolution. If you're using imagemagick, make sure you specify ptif as the output format. See the image documentation page for more details.
from iipsrv.
tried using ptif extension, and also converting using vips (following documentation page), same result.
this is what i see attaching a strace to the server pid:
root@li141-42:~# strace -p 7031
Process 7031 attached - interrupt to quit
accept(4,
{sa_family=AF_INET, sin_port=htons(36868), sin_addr=inet_addr("127.0.0.1")}, [16]) = 5
setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
read(5, "\1\1\0\1\0\10\0\0\0\1\0\0\0\0\0\0\1\4\0\1\1\311\7\0\t\25PATH_I"..., 8192) = 504
gettimeofday({1420581237, 619102}, NULL) = 0
write(3, "QUERY_STRING not set\n", 21) = 21
write(3, "\n", 1) = 1
gettimeofday({1420581237, 619548}, NULL) = 0
write(3, "Total Request Time: 446 microsec"..., 37) = 37
write(3, "image closed and deleted\n", 25) = 25
write(3, "Server count is 1\n", 18) = 18
write(3, "\n", 1) = 1
write(5, "\1\6\0\1\2\271\7\0Server: iipsrv/1.0\r\nCont"..., 736) = 736
shutdown(5, 1 /* send */) = 0
select(6, [5], NULL, NULL, {2, 0}) = 1 (in [5], left {1, 999998})
read(5, "", 1024) = 0
close(5) = 0
accept(4, {sa_family=AF_INET, sin_port=htons(36869), sin_addr=inet_addr("127.0.0.1")}, [16]) = 5
setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
read(5, "\1\1\0\1\0\10\0\0\0\1\0\0\0\0\0\0\1\4\0\1\1\326\2\0\t\25PATH_I"..., 8192) = 512
gettimeofday({1420581247, 10466}, NULL) = 0
write(3, "Full Request is FIF=dama.ptif\n", 30) = 30
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 7031 detached
from iipsrv.
I've been trying to reproduce your seg fault on a fresh 64bit Debian Wheezy (7.7) installation and I can't get it to crash. Can you send me your iipsrv binary to try out?
from iipsrv.
here the binary and a sample ptif: http://109.74.194.42/_iip/
thanks
from iipsrv.
Your binary works fine on my Debian Wheezy. The strace output doesn't really tell us much. Can you try running it through gdb or valgrind?
from iipsrv.
ok, let's try valgrind.
i tried running the server as standalone (--bind) or with spawn-fcgi, then proxying with nginx.
should i try apache too?
from iipsrv.
valgrind ./iipsrv.fcgi --bind 127.0.0.1:9000
should give some useful information on what's happening. If not, you could also try debugging with gdb.
from iipsrv.
root@li141-42:/opt/iipimage# valgrind --leak-check=full ./iipsrv.fcgi --bind 127.0.0.1:9000
==23566== Memcheck, a memory error detector
==23566== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==23566== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==23566== Command: ./iipsrv.fcgi --bind 127.0.0.1:9000
==23566==
==23566== Conditional jump or move depends on uninitialised value(s)
==23566== at 0x5EE155C: srandom_r (random_r.c:198)
==23566== by 0x5EE11F0: srand (random.c:213)
==23566== by 0x406216: main (Main.cc:397)
==23566==
==23566== Invalid read of size 1
==23566== at 0x4C294E2: strlen (mc_replace_strmem.c:390)
==23566== by 0x406A62: main (char_traits.h:261)
==23566== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==23566==
==23566==
==23566== Process terminating with default action of signal 11 (SIGSEGV)
==23566== Access not within mapped region at address 0x0
==23566== at 0x4C294E2: strlen (mc_replace_strmem.c:390)
==23566== by 0x406A62: main (char_traits.h:261)
==23566== If you believe this happened as a result of a stack
==23566== overflow in your program's main thread (unlikely but
==23566== possible), you can try to increase the size of the
==23566== main thread stack using the --main-stacksize= flag.
==23566== The main thread stack size used in this run was 8388608.
==23566==
==23566== HEAP SUMMARY:
==23566== in use at exit: 94,026 bytes in 43 blocks
==23566== total heap usage: 57 allocs, 14 frees, 95,660 bytes allocated
==23566==
==23566== 27 bytes in 1 blocks are possibly lost in loss record 3 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAB92: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAD2B: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x4147DC: IIPResponse::IIPResponse() (basic_string.h:1128)
==23566== by 0x406474: main (Main.cc:445)
==23566==
==23566== 28 bytes in 1 blocks are possibly lost in loss record 4 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC384: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC462: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x405DA2: main (Main.cc:138)
==23566==
==23566== 30 bytes in 1 blocks are possibly lost in loss record 5 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAB92: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAD2B: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x434AC1: Environment::getFileNamePattern() (basic_string.h:1128)
==23566== by 0x405F86: main (Main.cc:233)
==23566==
==23566== 30 bytes in 1 blocks are possibly lost in loss record 6 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC384: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC462: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x434C10: Environment::getFileSystemPrefix() (Environment.h:137)
==23566== by 0x405FAE: main (Main.cc:249)
==23566==
==23566== 37 bytes in 1 blocks are possibly lost in loss record 7 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC384: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC462: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x406847: main (Main.cc:490)
==23566==
==23566== 38 bytes in 1 blocks are possibly lost in loss record 8 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC384: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC462: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x4064B8: main (Main.cc:454)
==23566==
==23566== 40 bytes in 1 blocks are possibly lost in loss record 9 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC384: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CC462: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x40697A: main (Main.cc:491)
==23566==
==23566== 43 bytes in 1 blocks are possibly lost in loss record 10 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAB92: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAD2B: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x41472C: IIPResponse::IIPResponse() (basic_string.h:1296)
==23566== by 0x406474: main (Main.cc:445)
==23566==
==23566== 53 bytes in 1 blocks are possibly lost in loss record 13 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAB92: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAD2B: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x4147A9: IIPResponse::IIPResponse() (basic_string.h:1128)
==23566== by 0x406474: main (Main.cc:445)
==23566==
==23566== 61 bytes in 1 blocks are possibly lost in loss record 14 of 31
==23566== at 0x4C286E7: operator new(unsigned long) (vg_replace_malloc.c:287)
==23566== by 0x57CA998: std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAB92: std::string::_M_mutate(unsigned long, unsigned long, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x57CAD2B: std::string::_M_replace_safe(unsigned long, unsigned long, char const*, unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17)
==23566== by 0x4147BB: IIPResponse::IIPResponse() (basic_string.h:1128)
==23566== by 0x406474: main (Main.cc:445)
==23566==
==23566== LEAK SUMMARY:
==23566== definitely lost: 0 bytes in 0 blocks
==23566== indirectly lost: 0 bytes in 0 blocks
==23566== possibly lost: 387 bytes in 10 blocks
==23566== still reachable: 93,639 bytes in 33 blocks
==23566== suppressed: 0 bytes in 0 blocks
==23566== Reachable blocks (those to which a pointer was found) are not shown.
==23566== To see them, rerun with: --leak-check=full --show-reachable=yes
==23566==
==23566== For counts of detected and suppressed errors, rerun with: -v
==23566== Use --track-origins=yes to see where uninitialised values come from
==23566== ERROR SUMMARY: 41 errors from 12 contexts (suppressed: 6 from 6)
Segmentation fault
from iipsrv.
Hmmm, still not clear what's going on. How recent is your iipsrv code? If it's not the latest, would you mind trying again with a fresh download from github: https://github.com/ruven/iipsrv/archive/master.zip ? And what compile flags are you using for iipsrv?
And is your Debian version also installed from the 7.7 iso? If not, which exact version?
from iipsrv.
i did a git checkout, then
./autogen.sh
./configure
make
./src/iipsrv.fcgi --bind 127.0.0.1:9000
the server is a virtual machine at linode, debian 7.7 with these packages http://paste.debian.net/plain/139915
from iipsrv.
My Debian is a virtual machine using VirtualBox. Could this be a linode issue?
from iipsrv.
@atomotic Is it possible that #33 is your issue?
from iipsrv.
indeed, #33 solves the problem. thanks!
from iipsrv.
Related Issues (20)
- Question: Manifest.json HOT 2
- Options build on Alma 9 CentOS HOT 3
- feature suggestion: per user watermark HOT 11
- feature suggestion: per image MAX_LAYERS HOT 11
- IIIF info.json uri of @id change to https HOT 2
- When will the next version be released HOT 4
- Can't disable webp support HOT 1
- is it possible to change dpi? HOT 2
- [question] jpg support HOT 1
- Questions related with memcached, OpenJPEG and Kakadu HOT 7
- suggestion: do not require webservers and firefox in DEB HOT 2
- fails on file processed with vips, but works if png used as intermediary HOT 5
- Full image loading without watermark HOT 41
- CORS header not always present HOT 3
- No DPI in JPEG files generated by IIP HOT 10
- Compiling with Kakadu 8.3 HOT 5
- FastCGI HOT 1
- How to test? HOT 5
- File names with comma no longer work HOT 4
- Deepzoom with non-pyramidal tiled TIFF HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iipsrv.