I has a sketch that startings a web server to show files in LittleFS. But when it is starting, it's crashing with Exception code 28.
My full code:
#include <FS.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <ESP8266WebServer.h>
#include <LittleFS.h>
FS* fileSystem = &LittleFS;
File uploadFile;
ESP8266WebServer server(80);
void handleRoot() {
String lstemp = "<html>\
<head>\
<title>ESP8266 FS Browser</title>\
</head>\
<body>\
<nav>\
Disk Info\
</nav>\n";
if ((server.hasArg("path") ? server.arg("path") : "/").endsWith("/")) {
Dir dir = fileSystem->openDir(server.hasArg("path") ? server.arg("path") : "/");
Serial.println("listing dir");
while (dir.next()) {
Serial.println(dir.fileName());
if (dir.isFile()) {
lstemp += "<a href='/?path=" + (server.hasArg("path") ? server.arg("path") : "/") + dir.fileName() + "'>" + dir.fileName() + "</a><br>\n";
} else {
lstemp += "<a href='/?path=" + (server.hasArg("path") ? server.arg("path") : "/") + dir.fileName() + "/'>" + dir.fileName() + "/</a><br>\n";
}
}
} else {
lstemp = "<html><head><title>ESP8266 FS Browser</title></head><body>You are viewing file now. Click <a href='/download?action=download?path=" + server.arg("path") + "'>here</a> to download\n<iframe src='/download?action=view?path=" + server.arg("path") + "'></iframe>";
}
lstemp += "</body></html>";
server.send(200, "text/html", lstemp);
}
void handleFsInfo() {
String fsinfotemp = "FS: LittleFS\nTotal size: ";
FSInfo fs_info;
LittleFS.info(fs_info);
fsinfotemp += fs_info.totalBytes / 1000;
fsinfotemp += " KB\nUsed: ";
fsinfotemp += fs_info.usedBytes / 1000;
fsinfotemp += "\nFree: ";
fsinfotemp += (fs_info.totalBytes - fs_info.usedBytes) / 1000;
server.send(200, "text/plain", fsinfotemp);
}
void handleUploadFile() {}
void handleDownloadFile() {
if (server.arg("action") == "download") {
server.chunkedResponseModeStart(200, "application/octet-stream");
}
if (server.arg("action") == "view") {
server.chunkedResponseModeStart(200, "text/plain");
}
File downloadable = fileSystem->open(server.arg("path"), (char*)'r');
while (downloadable.available()) {
server.sendContent((char*)downloadable.read());
Serial.write(downloadable.read());
}
server.chunkedResponseFinalize();
downloadable.close();
}
void handleMkdir() {}
void handleRemove() {}
void handleRename() {}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin("MySSID", "MyPASSWORD");
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("WiFi Connect Failed! Rebooting...");
delay(1000);
ESP.restart();
}
if (!fileSystem->begin()) {
Serial.println("File system begin failed! Formatting LittleFS...");
fileSystem->format();
Serial.println("Done. Reboot ESP8266");
while (1) {;}
}
server.on("/", handleRoot);
server.on("/fsinfo", handleFsInfo);
server.on("/upload", handleUploadFile);
server.on("/download", handleDownloadFile);
server.on("/mkdir", handleMkdir);
server.on("/rm", handleRemove);
server.on("/rename", handleRename);
if (MDNS.begin("esp8266-filehost")) {
MDNS.addService("http", "tcp", 80);
}
server.begin();
}
void loop() {
server.handleClient();
MDNS.update();
}
Full exception code:
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
Exception (28):
epc1=0x40214c00 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000072 depc=0x00000000
>>>stack>>>
ctx: cont
sp: 3ffffca0 end: 3fffffc0 offset: 0190
3ffffe30: 3ffee9c0 ffffffff 00000006 402123c6
3ffffe40: 000052b4 00000430 3fff0924 40208bba
3ffffe50: 3ffffea0 3ffeff78 00000000 40211400
3ffffe60: 0000000a 3ffee9e4 4021439c 00000000
3ffffe70: 3ffffecc 00000000 3ffee9c0 402059d4
3ffffe80: 00000000 3ffeeb64 3ffffea0 4020f901
3ffffe90: 00000000 3ffeeb64 3ffee9c0 40207732
3ffffea0: 00000000 69006e6f 00000000 ffffffff
3ffffeb0: 40211df2 00000001 00000000 00000000
3ffffec0: 0023002f 00000000 00000000 68746170
3ffffed0: 3ffeea00 04000000 00000000 40211400
3ffffee0: 00000000 00000000 4bc6a7f0 3ffeed28
3ffffef0: 3fffdad0 00000001 3fff0204 4021435e
3fffff00: 00000000 00000000 3fff0b3c 401000e9
3fffff10: 00000000 616f6c6e 00000000 402058fd
3fffff20: 3fff04b4 3ffeea08 3ffee9c0 40207876
3fffff30: 00000000 3ffeeb08 00000001 4020accf
3fffff40: 000052ac 00000000 00000000 00000001
3fffff50: 00000001 3ffee9e4 3fff04e8 3ffeed28
3fffff60: 3fffdad0 3ffee9e4 3ffee9c0 402080a2
3fffff70: 00000000 3ffeeb08 3ffeed14 4020adc4
3fffff80: 00000000 00000000 00000001 401003ec
3fffff90: 3fffdad0 00000000 3ffeed14 40208168
3fffffa0: 3fffdad0 00000000 3ffeed14 40211de0
3fffffb0: feefeffe feefeffe 3ffe85dc 40100ea5
<<<stack<<<
--------------- CUT HERE FOR EXCEPTION DECODER ---------------
This crash happens when I added file download function, but I hasn't found an error. Global variables remaining 36% of RAM, but all temp String variables are freed after finishing function automatically. So chunk server sending is collecting a much of junk?
I think that this can happen when converting char to char*. The read function returns a char and at the end of c-strings it should always be null and when converting it is not. Perhaps there is an error in this
I need to aggregate some sensor data and I'm experimenting with windowed aggregation for a PoC/study project.
After researching here and there and a lot of attempts, I came up with the following code, which seems to be working.
I get in fact the peeks showing the expected results and I can also see the deserialisation/serialisation of the SensorData object happening through the stream.
And I can see the final result in the output topic.
Here is the problem though: after the first result is written in the output topic, the stream crashes and it crashes earlier or later depending on the length of the commitMs.
Any idea? Am I doing something wrong here?
I am using a landoop/fast-data-dev docker image to test this.
long commitMs = TBD;
Properties config = new Properties();
config.put(StreamsConfig.APPLICATION_ID_CONFIG, "sensor-data-stream-analyzer");
config.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka-cluster1:9092");
config.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
config.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
config.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
config.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, commitMs);
config.put(StreamsConfig.DEFAULT_TIMESTAMP_EXTRACTOR_CLASS_CONFIG, WallclockTimestampExtractor.class);
final Serializer<SensorReport> jsonSerializer = new MyJsonSerializer();
final Deserializer<SensorReport> jsonDeserializer = new MyJsonDeserializer(SensorReport.class);
final Serde<SensorReport> jsonSerde = Serdes.serdeFrom(jsonSerializer, jsonDeserializer);
final Serde<String> stringSerde = Serdes.String();
final Serde<Long> longSerde = Serdes.Long();
StreamsBuilder builder = new StreamsBuilder();
KStream<String, SensorReport> stream =
builder.stream(inputTopic, Consumed.with(stringSerde, jsonSerde));
stream
.peek((k,v)-> System.out.println("1|k: " + k + "v: " + v.toString()))
.map((key, sensorReport) -> {
double[] fakeLatLon = new double[]{10,10};
return KeyValue.pair(String.format("%f %f", fakeLatLon[0], fakeLatLon[1]), sensorReport);
})
.peek((k,v)-> System.out.println("2|k: " + k + "v: " + v.toString()))
.groupByKey(Serialized.with(stringSerde, jsonSerde))
.windowedBy(TimeWindows.of(10000L).until(10000L))
.count()
.toStream((k, v) -> String.format("%d %s", k.window().start(), k.key()))
.peek((k,v)-> System.out.println("3|k: " + k + "v: " + v.toString()))
.map((k,v) -> KeyValue.pair(k, v.toString()))
.to(outputTopic, Produced.with(stringSerde, stringSerde));
KafkaStreams run = new KafkaStreams(builder.build(), getConfig());
run.start();
And this is the relevant part of the stack trace:
Stack: [0x00007faacee5f000,0x00007faacef5fad0], sp=0x00007faacef5b3b8, free space=1008k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C 0x0000000000149aa6
C [librocksdbjni6827723631295059350.so+0x3dc5b8]
C [librocksdbjni6827723631295059350.so+0x3e13b5] rocksdb::ParseColumnFamilyOption(std::string const&, std::string const&, rocksdb::ColumnFamilyOptions*, bool)+0xc95
C [librocksdbjni6827723631295059350.so+0x3e2282] rocksdb::GetColumnFamilyOptionsFromMapInternal(rocksdb::ColumnFamilyOptions const&, std::unordered_map<std::string, std::string, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&, rocksdb::ColumnFamilyOptions*, bool, std::vector<std::string, std::allocator<std::string> >*, bool)+0x582
C [librocksdbjni6827723631295059350.so+0x3e2480] rocksdb::GetColumnFamilyOptionsFromMap(rocksdb::ColumnFamilyOptions const&, std::unordered_map<std::string, std::string, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&, rocksdb::ColumnFamilyOptions*, bool, bool)+0x20
C [librocksdbjni6827723631295059350.so+0x3e8d5e] rocksdb::RocksDBOptionsParser::EndSection(rocksdb::OptionSection, std::string const&, std::string const&, std::unordered_map<std::string, std::string, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&, bool)+0x5ee
C [librocksdbjni6827723631295059350.so+0x3e97ac] rocksdb::RocksDBOptionsParser::Parse(std::string const&, rocksdb::Env*, bool)+0x5fc
C [librocksdbjni6827723631295059350.so+0x3ea8df] rocksdb::RocksDBOptionsParser::VerifyRocksDBOptionsFromFile(rocksdb::DBOptions const&, std::vector<std::string, std::allocator<std::string> > const&, std::vector<rocksdb::ColumnFamilyOptions, std::allocator<rocksdb::ColumnFamilyOptions> > const&, std::string const&, rocksdb::Env*, rocksdb::OptionsSanityCheckLevel, bool)+0x7f
C [librocksdbjni6827723631295059350.so+0x3ec7a3] rocksdb::PersistRocksDBOptions(rocksdb::DBOptions const&, std::vector<std::string, std::allocator<std::string> > const&, std::vector<rocksdb::ColumnFamilyOptions, std::allocator<rocksdb::ColumnFamilyOptions> > const&, std::string const&, rocksdb::Env*)+0x1013
C [librocksdbjni6827723631295059350.so+0x2e8540] rocksdb::DBImpl::WriteOptionsFile(bool, bool)+0x960
C [librocksdbjni6827723631295059350.so+0x315e68] rocksdb::DB::Open(rocksdb::DBOptions const&, std::string const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**)+0x16c8
C [librocksdbjni6827723631295059350.so+0x316937] rocksdb::DB::Open(rocksdb::Options const&, std::string const&, rocksdb::DB**)+0x177
C [librocksdbjni6827723631295059350.so+0x28240a] std::_Function_handler<rocksdb::Status (rocksdb::Options const&, std::string const&, rocksdb::DB**), rocksdb::Status (*)(rocksdb::Options const&, std::string const&, rocksdb::DB**)>::_M_invoke(std::_Any_data const&, rocksdb::Options const&, std::string const&, rocksdb::DB**)+0x1a
C [librocksdbjni6827723631295059350.so+0x27b2ae] rocksdb_open_helper(JNIEnv_*, long, _jstring*, std::function<rocksdb::Status (rocksdb::Options const&, std::string const&, rocksdb::DB**)>)+0x7e
C [librocksdbjni6827723631295059350.so+0x27b3ee] Java_org_rocksdb_RocksDB_open__JLjava_lang_String_2+0x3e
j org.rocksdb.RocksDB.open(JLjava/lang/String;)J+0
j org.rocksdb.RocksDB.open(Lorg/rocksdb/Options;Ljava/lang/String;)Lorg/rocksdb/RocksDB;+9
j org.apache.kafka.streams.state.internals.RocksDBStore.openDB(Ljava/io/File;Lorg/rocksdb/Options;I)Lorg/rocksdb/RocksDB;+25
j org.apache.kafka.streams.state.internals.RocksDBStore.openDB(Lorg/apache/kafka/streams/processor/ProcessorContext;)V+282
j org.apache.kafka.streams.state.internals.Segment.openDB(Lorg/apache/kafka/streams/processor/ProcessorContext;)V+2
j org.apache.kafka.streams.state.internals.Segments.getOrCreateSegment(JLorg/apache/kafka/streams/processor/ProcessorContext;)Lorg/apache/kafka/streams/state/internals/Segment;+102
j org.apache.kafka.streams.state.internals.RocksDBSegmentedBytesStore.put(Lorg/apache/kafka/common/utils/Bytes;[B)V+27
j org.apache.kafka.streams.state.internals.RocksDBWindowStore.put(Ljava/lang/Object;Ljava/lang/Object;J)V+29
j org.apache.kafka.streams.state.internals.ChangeLoggingWindowBytesStore.put(Lorg/apache/kafka/common/utils/Bytes;[BJ)V+7
j org.apache.kafka.streams.state.internals.ChangeLoggingWindowBytesStore.put(Ljava/lang/Object;Ljava/lang/Object;J)V+10
j org.apache.kafka.streams.state.internals.CachingWindowStore$1.apply(Ljava/util/List;)V+117
j org.apache.kafka.streams.state.internals.NamedCache.flush(Lorg/apache/kafka/streams/state/internals/NamedCache$LRUNode;)V+356
j org.apache.kafka.streams.state.internals.NamedCache.flush()V+2
j org.apache.kafka.streams.state.internals.ThreadCache.flush(Ljava/lang/String;)V+22
j org.apache.kafka.streams.state.internals.CachingWindowStore.flush()V+8
j org.apache.kafka.streams.state.internals.MeteredWindowStore.flush()V+14
j org.apache.kafka.streams.processor.internals.ProcessorStateManager.flush()V+77
j org.apache.kafka.streams.processor.internals.AbstractTask.flushState()V+4
j org.apache.kafka.streams.processor.internals.StreamTask.flushState()V+12
j org.apache.kafka.streams.processor.internals.StreamTask.commit(Z)V+22
j org.apache.kafka.streams.processor.internals.StreamTask.commit()V+2
j org.apache.kafka.streams.processor.internals.AssignedTasks$1.apply(Lorg/apache/kafka/streams/processor/internals/Task;)V+1
j org.apache.kafka.streams.processor.internals.AssignedTasks.applyToRunningTasks(Lorg/apache/kafka/streams/processor/internals/TaskAction;)V+35
j org.apache.kafka.streams.processor.internals.AssignedTasks.commit()I+5
j org.apache.kafka.streams.processor.internals.TaskManager.commitAll()I+4
j org.apache.kafka.streams.processor.internals.StreamThread.maybeCommit(J)V+96
j org.apache.kafka.streams.processor.internals.StreamThread.runOnce(J)J+280
j org.apache.kafka.streams.processor.internals.StreamThread.runLoop()V+33
j org.apache.kafka.streams.processor.internals.StreamThread.run()V+36
v ~StubRoutines::call_stub
V [libjvm.so+0x41ab0a]
C 0x0000560ba0323140
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x0000560ba02c2000 JavaThread "kafka-coordinator-heartbeat-thread | sensor-data-stream-analyzer" daemon [_thread_blocked, id=2505, stack(0x00007faacec5d000,0x00007faaced5dad0)]
0x0000560ba027b800 JavaThread "DestroyJavaVM" [_thread_blocked, id=2487, stack(0x00007faae7a89000,0x00007faae7b89ad0)]
0x0000560ba0325000 JavaThread "sensor-data-stream-analyzer-150fc5f9-aed6-4774-9520-a0599d8566a1-CleanupThread" daemon [_thread_blocked, id=2504, stack(0x00007faaced5e000,0x00007faacee5ead0)]
=>0x0000560ba0322000 JavaThread "sensor-data-stream-analyzer-150fc5f9-aed6-4774-9520-a0599d8566a1-StreamThread-1" [_thread_in_native, id=2503, stack(0x00007faacee5f000,0x00007faacef5fad0)]
0x0000560ba02a6800 JavaThread "kafka-producer-network-thread | sensor-data-stream-analyzer-150fc5f9-aed6-4774-9520-a0599d8566a1-StreamThread-1-producer" daemon [_thread_in_native, id=2502, stack(0x00007faacef60000,0x00007faacf060ad0)]
0x0000560ba0191800 JavaThread "kafka-admin-client-thread | sensor-data-stream-analyzer-150fc5f9-aed6-4774-9520-a0599d8566a1-admin" daemon [_thread_in_native, id=2501, stack(0x00007faacf261000,0x00007faacf361ad0)]
0x0000560b9fb20800 JavaThread "Service Thread" daemon [_thread_blocked, id=2499, stack(0x00007faad29ed000,0x00007faad2aedad0)]
0x0000560b9faef800 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=2498, stack(0x00007faad2aef000,0x00007faad2befad0)]
0x0000560b9faa1000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=2497, stack(0x00007faad2bf1000,0x00007faad2cf1ad0)]
0x0000560b9fa94000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=2496, stack(0x00007faad2cf3000,0x00007faad2df3ad0)]
0x0000560b9fa91800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2495, stack(0x00007faad2df4000,0x00007faad2ef4ad0)]
0x0000560b9fa64800 JavaThread "Finalizer" daemon [_thread_blocked, id=2494, stack(0x00007faad2ef5000,0x00007faad2ff5ad0)]
0x0000560b9fa5a000 JavaThread "Reference Handler" daemon [_thread_blocked, id=2493, stack(0x00007faad2ff6000,0x00007faad30f6ad0)]
Internal exceptions (10 events):
Event: 1.360 Thread 0x0000560b9f909000 Exception <a 'java/lang/ArrayIndexOutOfBoundsException'> (0x00000000e2109468) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/runtime/sharedRuntime.cpp, line 613]
Event: 1.715 Thread 0x0000560ba0191800 Exception <a 'java/lang/NoSuchMethodError': java.lang.Object.lambda$identity$2(Ljava/lang/Object;)Ljava/lang/Object;> (0x00000000e1213bd0) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/interpreter/lin
Event: 1.949 Thread 0x0000560ba0322000 Implicit null exception at 0x00007faad8cd8235 to 0x00007faad8cd85dd
Event: 3.059 Thread 0x0000560ba0322000 Exception <a 'java/io/FileNotFoundException'> (0x00000000e1c1e250) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 3.074 Thread 0x0000560ba0322000 Exception <a 'java/io/FileNotFoundException'> (0x00000000e1c7b6e8) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 3.076 Thread 0x0000560ba0322000 Exception <a 'java/io/FileNotFoundException'> (0x00000000e1c854a8) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 3.077 Thread 0x0000560ba0322000 Exception <a 'java/io/FileNotFoundException'> (0x00000000e1c8e7e8) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 3.079 Thread 0x0000560ba0322000 Exception <a 'java/io/FileNotFoundException'> (0x00000000e1c98678) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 3.080 Thread 0x0000560ba0322000 Exception <a 'java/io/FileNotFoundException'> (0x00000000e1ca2470) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 709]
Event: 12.177 Thread 0x0000560ba0322000 Exception <a 'sun/nio/fs/UnixException'> (0x00000000e145de70) thrown at [/home/buildozer/aports/community/openjdk8/src/icedtea-3.11.0/openjdk/hotspot/src/share/vm/prims/jni.cpp, line 709]
Dynamic libraries:
560b9f7b0000-560b9f7b1000 r--p 00000000 08:01 1189695 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java
560b9f7b1000-560b9f7b2000 r-xp 00001000 08:01 1189695 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java
560b9f7b2000-560b9f7b3000 r--p 00002000 08:01 1189695 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java
560b9f7b3000-560b9f7b4000 r--p 00002000 08:01 1189695 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java
560b9f7b4000-560b9f7b5000 rw-p 00003000 08:01 1189695 /usr/lib/jvm/java-1.8-openjdk/jre/bin/java
7faacdfd0000-7faace1f4000 r-xp 00000000 08:01 1317566 /usr/glibc-compat/lib/ld-2.27.so
7faace1f4000-7faace1f5000 r--p 00024000 08:01 1317566 /usr/glibc-compat/lib/ld-2.27.so
7faace1f5000-7faace1f6000 rw-p 00025000 08:01 1317566 /usr/glibc-compat/lib/ld-2.27.so
7faace1f7000-7faacea32000 r-xp 00000000 08:01 1320848 /tmp/librocksdbjni6827723631295059350.so
7faacea32000-7faacea50000 rw-p 0063b000 08:01 1320848 /tmp/librocksdbjni6827723631295059350.so
7faacf562000-7faacf569000 r--p 00000000 08:01 1311101 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnio.so
7faacf569000-7faacf571000 r-xp 00007000 08:01 1311101 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnio.so
7faacf571000-7faacf575000 r--p 0000f000 08:01 1311101 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnio.so
7faacf575000-7faacf576000 r--p 00012000 08:01 1311101 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnio.so
7faacf576000-7faacf577000 rw-p 00013000 08:01 1311101 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnio.so
7faad2578000-7faad257c000 r--p 00000000 08:01 1311100 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnet.so
7faad257c000-7faad258b000 r-xp 00004000 08:01 1311100 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnet.so
7faad258b000-7faad2590000 r--p 00013000 08:01 1311100 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnet.so
7faad2590000-7faad2591000 r--p 00017000 08:01 1311100 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnet.so
7faad2591000-7faad2592000 rw-p 00018000 08:01 1311100 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libnet.so
7faad2592000-7faad2596000 r--p 00000000 08:01 1311098 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libmanagement.so
7faad2596000-7faad2599000 r-xp 00004000 08:01 1311098 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libmanagement.so
7faad2599000-7faad259b000 r--p 00007000 08:01 1311098 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libmanagement.so
7faad259b000-7faad259c000 r--p 00008000 08:01 1311098 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libmanagement.so
7faad259c000-7faad259d000 rw-p 00009000 08:01 1311098 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libmanagement.so
7faad259d000-7faad25a1000 r--s 00058000 08:01 1189715 /usr/lib/jvm/java-1.8-openjdk/jre/lib/jsse.jar
7faad27a1000-7faad28eb000 r--s 01cb4000 00:51 8654897590 /kafka-dev/sensor-stream-analyzer-1.0-jar-with-dependencies.jar
7faad4156000-7faad4325000 r--s 01f54000 08:01 1189724 /usr/lib/jvm/java-1.8-openjdk/jre/lib/rt.jar
7faae7a30000-7faae7a33000 r--p 00000000 08:01 1311106 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libzip.so
7faae7a33000-7faae7a37000 r-xp 00003000 08:01 1311106 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libzip.so
7faae7a37000-7faae7a39000 r--p 00007000 08:01 1311106 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libzip.so
7faae7a39000-7faae7a3a000 r--p 00008000 08:01 1311106 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libzip.so
7faae7a3a000-7faae7a3b000 rw-p 00009000 08:01 1311106 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libzip.so
7faae7a3b000-7faae7a43000 rw-s 00000000 08:01 1320843 /tmp/hsperfdata_root/2486
7faae7a45000-7faae7a52000 r--p 00000000 08:01 1311090 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libjava.so
7faae7a52000-7faae7a6a000 r-xp 0000d000 08:01 1311090 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libjava.so
7faae7a6a000-7faae7a72000 r--p 00025000 08:01 1311090 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libjava.so
7faae7a72000-7faae7a73000 r--p 0002c000 08:01 1311090 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libjava.so
7faae7a73000-7faae7a74000 rw-p 0002d000 08:01 1311090 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libjava.so
7faae7a75000-7faae7a7a000 r--p 00000000 08:01 1311105 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libverify.so
7faae7a7a000-7faae7a81000 r-xp 00005000 08:01 1311105 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libverify.so
7faae7a81000-7faae7a84000 r--p 0000c000 08:01 1311105 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libverify.so
7faae7a84000-7faae7a86000 r--p 0000e000 08:01 1311105 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libverify.so
7faae7a86000-7faae7a87000 rw-p 00010000 08:01 1311105 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/libverify.so
7faae7b8a000-7faae7b8d000 r--p 00000000 08:01 1189738 /usr/lib/libgcc_s.so.1
7faae7b8d000-7faae7b99000 r-xp 00003000 08:01 1189738 /usr/lib/libgcc_s.so.1
7faae7b99000-7faae7b9c000 r--p 0000f000 08:01 1189738 /usr/lib/libgcc_s.so.1
7faae7b9c000-7faae7b9d000 r--p 00011000 08:01 1189738 /usr/lib/libgcc_s.so.1
7faae7b9d000-7faae7b9e000 rw-p 00012000 08:01 1189738 /usr/lib/libgcc_s.so.1
7faae7b9e000-7faae7c3a000 r--p 00000000 08:01 1189800 /usr/lib/libstdc++.so.6.0.25
7faae7c3a000-7faae7ca8000 r-xp 0009c000 08:01 1189800 /usr/lib/libstdc++.so.6.0.25
7faae7ca8000-7faae7ce1000 r--p 0010a000 08:01 1189800 /usr/lib/libstdc++.so.6.0.25
7faae7ce1000-7faae7cef000 r--p 00142000 08:01 1189800 /usr/lib/libstdc++.so.6.0.25
7faae7cef000-7faae7cf0000 rw-p 00150000 08:01 1189800 /usr/lib/libstdc++.so.6.0.25
7faae7cf3000-7faae7ee7000 r--p 00000000 08:01 1311110 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server/libjvm.so
7faae7ee7000-7faae82f4000 r-xp 001f4000 08:01 1311110 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server/libjvm.so
7faae82f4000-7faae84b9000 r--p 00601000 08:01 1311110 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server/libjvm.so
7faae84b9000-7faae854f000 r--p 007c5000 08:01 1311110 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server/libjvm.so
7faae854f000-7faae8577000 rw-p 0085b000 08:01 1311110 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server/libjvm.so
7faae85a8000-7faae85ab000 r--p 00000000 08:01 1310764 /lib/libz.so.1.2.11
7faae85ab000-7faae85b9000 r-xp 00003000 08:01 1310764 /lib/libz.so.1.2.11
7faae85b9000-7faae85c0000 r--p 00011000 08:01 1310764 /lib/libz.so.1.2.11
7faae85c0000-7faae85c1000 r--p 00017000 08:01 1310764 /lib/libz.so.1.2.11
7faae85c1000-7faae85c2000 rw-p 00018000 08:01 1310764 /lib/libz.so.1.2.11
7faae85c2000-7faae85c4000 r--p 00000000 08:01 1311076 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/jli/libjli.so
7faae85c4000-7faae85cd000 r-xp 00002000 08:01 1311076 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/jli/libjli.so
7faae85cd000-7faae85d1000 r--p 0000b000 08:01 1311076 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/jli/libjli.so
7faae85d1000-7faae85d2000 r--p 0000e000 08:01 1311076 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/jli/libjli.so
7faae85d2000-7faae85d3000 rw-p 0000f000 08:01 1311076 /usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/jli/libjli.so
7faae85d3000-7faae85ea000 r--p 00000000 08:01 1320878 /lib/ld-musl-x86_64.so.1
7faae85ea000-7faae862f000 r-xp 00017000 08:01 1320878 /lib/ld-musl-x86_64.so.1
7faae862f000-7faae8661000 r--p 0005c000 08:01 1320878 /lib/ld-musl-x86_64.so.1
7faae8661000-7faae8662000 r--p 0008d000 08:01 1320878 /lib/ld-musl-x86_64.so.1
7faae8662000-7faae8663000 rw-p 0008e000 08:01 1320878 /lib/ld-musl-x86_64.so.1
--------------- S Y S T E M ---------------
OS:NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.9.2
PRETTY_NAME="Alpine Linux v3.9"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"
I solved my problem and I'm going to share my solution here for whoever ends up having this same problem.
Initially the stack trace line "C [librocksdbjni6827723631295059350.so+0x3e13b5] rocksdb::ParseColumnFamilyOption(std::string const&, std::string const&, rocksdb::ColumnFamilyOptions*, bool)+0xc95" led me to think it was a musl-libc vs glibc related issue as mentioned in the following two issue links:
https://github.com/facebook/rocksdb/issues/3848
https://github.com/facebook/rocksdb/pull/3143
In fact I use a landoop/fast-data-dev:latest docker image, which is Alpine based. But a quick look at the landoop/fast-data-dev, shows that the author dealt with the glibc:
https://github.com/Landoop/fast-data-dev/blob/master/Dockerfile
# glibc : alpine linux has an embedded libc which misses some functions that are
# needed by some apps (e.g jvm's rocksdb jni — HDFS connector, Lenses, etc),
# so we add glibc to make them work. Also now we can add en_US.UTF-8 locale.
# https://github.com/sgerrand/alpine-pkg-glibc
The crash went away by simply replacing the kafka-stream dependency in my pom.xml from
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>2.0.1</version>
</dependency>
to
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>2.2.0</version>
</dependency>
I need to acquire some points' coordinates (represented by variables xCoord and yCoord) and set to 1 the associated positions in matrix scan_image. It may happen that a point's coordinates are outside matrix's dimensions, so scan_image needs to be resized before setting point's associated position in matrix to 1.
Here's the code:
#include "line_matching/listener.hpp"
#include <opencv2/core.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/utility.hpp>
using namespace cv;
using namespace std;
int main(int argv, char** argc){
/* start listening */
listener lsr;
lsr.listen(argv, argc);
/* get data that were listened to */
vector<listener::completeInformation> vecCI = lsr.getListeningInfo();
/* create a matrix to host image */
Mat scan_image;
/* fill matrix */
float currentX = 0;
float currentY = 0;
for(int i = 0; i<(int)vecCI.size(); i++)
{
/* get current info */
listener::completeInformation ci = vecCI[i];
float xCoord = ci.position.first;
float yCoord = ci.position.second;
/* matrix is void */
if(scan_image.empty())
{
cout << "case 1" << endl;
/* create a new row */
Mat firstRow = Mat::zeros(yCoord+1, xCoord+1, CV_32FC1);
scan_image.push_back(firstRow);
/* set element to 1 */
scan_image.at<float>(xCoord, yCoord) = 1;
/* update matrix size */
currentX = xCoord;
currentY = yCoord;
}
/* new coordinate is outside current matrix */
else if (xCoord > currentX && yCoord > currentY)
{
cout << "case 2" << endl;
/* add necessary rows */
Mat newRows = Mat::zeros(yCoord-currentY, currentX+1, CV_32FC1);
cout << "Size scan " << scan_image.rows << " " << scan_image.cols << endl;
scan_image.push_back(newRows);
currentY = yCoord;
/* add new cols */
Mat newCols = Mat::zeros(currentY+1, xCoord-currentX, CV_32FC1);
cout << "Size newCols " << newCols.rows << " " << newCols.cols << endl;
hconcat(scan_image, newCols, scan_image);
/* update matrix size */
currentX = xCoord;
/* set element to 1 */
scan_image.at<float>(xCoord, yCoord) = 1;
}
/* coordinate's column is outside matrix */
else if(xCoord > currentX && yCoord < currentY)
{
cout << "case 3" << endl;
/* add necessary cols */
Mat newCols = Mat::zeros(currentY+1, xCoord-currentX, CV_32FC1);
cout << "Size scan " << scan_image.rows << " " << scan_image.cols << endl;
cout << "Size newCols " << newCols.rows << " " << newCols.cols << endl;
Mat newMat;
hconcat(scan_image, newCols, newMat);
cout << "Size newMat " << newMat.rows << " " << newMat.cols << endl;
//scan_image.resize(newMat.rows);
//scan_image.create(newMat.rows, newMat.cols, CV_32FC1);
resize(scan_image, scan_image, newMat.size());
cout << "Size scan dopo" << scan_image.rows << " " << scan_image.cols << endl;
//scan_image = newMat.clone();
cout << "create" << endl;
newMat.copyTo(scan_image);
//newMat.assignTo(scan_image, -1);
cout << "Dopo creazione mat " << scan_image.rows << " " << scan_image.cols << endl;
/* update matrix size */
currentX = xCoord;
/* set element to 1 */
scan_image.at<float>(xCoord, yCoord) = 1;
}
/* coordinate's row is outside matrix */
else if(xCoord < currentX && yCoord > currentY)
{
cout << "case 4" << endl;
/* add necessary rows */
Mat newRows = Mat::zeros(yCoord-currentY, currentX+1, CV_32FC1);
scan_image.push_back(newRows);
/* update matrix size */
currentY = yCoord;
/* set element to 1 */
scan_image.at<float>(xCoord, yCoord) = 1;
}
else
{
cout << "case 5" << endl;
/* set element to 1 */
scan_image.at<float>(xCoord, yCoord) = 1;
}
}
imshow("Scan", scan_image);
waitKey();
}
I tried many options to modify scan_info's dimensions (you'll find them in comments) in case denoted as CASE 3, but everytime I get a bad memory error:
*** glibc detected *** /home/ubisum/fuerte_workspace/line_matching/bin/matching_main: free(): invalid next size (fast): 0x0000000001e81060 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7e846)[0x7feb0e3fe846]
/usr/local/lib/libopencv_core.so.3.0(_ZN2cv8fastFreeEPv+0x9d)[0x7feb0fb24986]
/usr/local/lib/libopencv_core.so.3.0(+0x21cbb0)[0x7feb0fb26bb0]
/usr/local/lib/libopencv_core.so.3.0(_ZNK2cv12MatAllocator5unmapEPNS_8UMatDataE+0x43)[0x7feb0fb25eaf]
/usr/local/lib/libopencv_core.so.3.0(_ZN2cv3Mat10deallocateEv+0x71)[0x7feb0fb27c3b]
/home/ubisum/fuerte_workspace/line_matching/bin/matching_main(_ZN2cv3MatD1Ev+0x75)[0x40de15]
/usr/local/lib/libopencv_imgproc.so.3.0(_ZN2cv6resizeERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0x16da)[0x7feb0efd80dc]
/home/ubisum/fuerte_workspace/line_matching/bin/matching_main(main+0x1b19)[0x40d389]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7feb0e3a176d]
/home/ubisum/fuerte_workspace/line_matching/bin/matching_main[0x40dce1]
======= Memory map: ========
00400000-0041f000 r-xp 00000000 08:06 1318193 /home/ubisum/fuerte_workspace/line_matching/bin/matching_main
0061e000-0061f000 r--p 0001e000 08:06 1318193 /home/ubisum/fuerte_workspace/line_matching/bin/matching_main
0061f000-00620000 rw-p 0001f000 08:06 1318193 /home/ubisum/fuerte_workspace/line_matching/bin/matching_main
01e43000-030ec000 rw-p 00000000 00:00 0 [heap]
7feae470a000-7feae490a000 rw-p 00000000 00:00 0
7feae490a000-7feae4919000 r-xp 00000000 08:06 2772700 /usr/lib/libtbbmalloc.so.2
7feae4919000-7feae4b19000 ---p 0000f000 08:06 2772700 /usr/lib/libtbbmalloc.so.2
7feae4b19000-7feae4b1a000 r--p 0000f000 08:06 2772700 /usr/lib/libtbbmalloc.so.2
7feae4b1a000-7feae4b1b000 rw-p 00010000 08:06 2772700 /usr/lib/libtbbmalloc.so.2
7feae4b1b000-7feae4b2c000 rw-p 00000000 00:00 0
7feae4b2c000-7feae4b6c000 rw-s 00024000 00:05 13777 /dev/ati/card0
7feae4b6c000-7feae526c000 rw-s 00006000 00:05 13777 /dev/ati/card0
7feae526c000-7feae53ec000 rw-p 00000000 00:00 0
7feae53ec000-7feae5486000 r-xp 00000000 08:06 2766513 /usr/lib/fglrx/libGL.so.1.2
7feae5486000-7feae5586000 ---p 0009a000 08:06 2766513 /usr/lib/fglrx/libGL.so.1.2
7feae5586000-7feae55ae000 rwxp 0009a000 08:06 2766513 /usr/lib/fglrx/libGL.so.1.2
7feae55ae000-7feae55cb000 rwxp 00000000 00:00 0
7feae55cb000-7feae7a13000 r-xp 00000000 08:06 2766506 /usr/lib/fglrx/libamdocl64.so
7feae7a13000-7feae7c13000 ---p 02448000 08:06 2766506 /usr/lib/fglrx/libamdocl64.so
7feae7c13000-7feae7ee0000 rw-p 02448000 08:06 2766506 /usr/lib/fglrx/libamdocl64.so
7feae7ee0000-7feae8000000 rw-p 00000000 00:00 0
7feae8000000-7feae8021000 rw-p 00000000 00:00 0
7feae8021000-7feaec000000 ---p 00000000 00:00 0
7feaec000000-7feaec021000 rw-p 00000000 00:00 0
7feaec021000-7feaf0000000 ---p 00000000 00:00 0
7feaf0000000-7feaf0021000 rw-p 00000000 00:00 0
7feaf0021000-7feaf4000000 ---p 00000000 00:00 0
7feaf4000000-7feaf4021000 rw-p 00000000 00:00 0
7feaf4021000-7feaf8000000 ---p 00000000 00:00 0
7feaf8000000-7feaf8021000 rw-p 00000000 00:00 0
7feaf8021000-7feafc000000 ---p 00000000 00:00 0
7feafc011000-7feafc0d1000 rw-p 00000000 00:00 0
7feafc0d1000-7feafc171000 r-xp 00000000 08:06 2766543 /usr/lib/fglrx/libatiadlxx.so
7feafc171000-7feafc271000 ---p 000a0000 08:06 2766543 /usr/lib/fglrx/libatiadlxx.so
7feafc271000-7feafc274000 rw-p 000a0000 08:06 2766543 /usr/lib/fglrx/libatiadlxx.so
7feafc274000-7feafc284000 rw-p 00000000 00:00 0
7feafc284000-7feafc28a000 r-xp 00000000 08:06 2766549 /usr/lib/fglrx/libOpenCL.so.1
7feafc28a000-7feafc489000 ---p 00006000 08:06 2766549 /usr/lib/fglrx/libOpenCL.so.1
7feafc489000-7feafc48a000 rw-p 00005000 08:06 2766549 /usr/lib/fglrx/libOpenCL.so.1
7feafc48a000-7feafc48b000 ---p 00000000 00:00 0
7feafc48b000-7feafcc8b000 rw-p 00000000 00:00 0 [stack:13933]
7feafcc8b000-7feafcc8c000 ---p 00000000 00:00 0
7feafcc8c000-7feafd48c000 rw-p 00000000 00:00 0
7feafd48c000-7feafd48d000 ---p 00000000 00:00 0
7feafd48d000-7feafdc8d000 rw-p 00000000 00:00 0
7feafdc8d000-7feafdc8e000 ---p 00000000 00:00 0
7feafdc8e000-7feafe48e000 rw-p 00000000 00:00 0
7feafe48e000-7feafe48f000 ---p 00000000 00:00 0
7feafe48f000-7feafec8f000 rw-p 00000000 00:00 0
7feafec8f000-7feafec9b000 r-xp 00000000 08:06 1970270 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7feafec9b000-7feafee9a000 ---p 0000c000 08:06 1970270 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7feafee9a000-7feafee9b000 r--p 0000b000 08:06 1970270 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7feafee9b000-7feafee9c000 rw-p 0000c000 08:06 1970270 /lib/x86_64-linux-gnu/libnss_files-2.15.so
7feafee9c000-7feaff57f000 r--p 00000000 08:06 2759450 /usr/lib/locale/locale-archive
7feaff57f000-7feaff585000 r-xp 00000000 08:06 2760664 /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
7feaff585000-7feaff784000 ---p 00006000 08:06 2760664 /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
7feaff784000-7feaff785000 r--p 00005000 08:06 2760664 /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
7feaff785000-7feaff786000 rw-p 00006000 08:06 2760664 /usr/lib/x86_64-linux-gnu/libogg.so.0.7.1
7feaff786000-7feaff7a7000 r-xp 00000000 08:06 2760810 /usr/lib/x86_64-linux-gnu/libv4lconvert.so.0
7feaff7a7000-7feaff9a6000 ---p 00021000 08:06 2760810 /usr/lib/x86_64-linux-gnu/libv4lconvert.so.0
7feaff9a6000-7feaff9a8000 r--p 00020000 08:06 2760810 /usr/lib/x86_64-linux-gnu/libv4lconvert.so.0
7feaff9a8000-7feaff9a9000 rw-p 00022000 08:06 2760810 /usr/lib/x86_64-linux-gnu/libv4lconvert.so.0
7feaff9a9000-7feaff9fb000 rw-p 00000000 00:00 0
7feaff9fb000-7feaffa0b000 r-xp 00000000 08:06 2760531 /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0.25.0
7feaffa0b000-7feaffc0b000 ---p 00010000 08:06 2760531 /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0.25.0
7feaffc0b000-7feaffc0c000 r--p 00010000 08:06 2760531 /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0.25.0Aborted (core dumped)
Any suggestion?
thanks
I am confused as to why I am getting 128 bytes for scan-lines/rowpitch rather than the 8 I am specifying. The BMP in question being loaded is 4 pixels, red top left, green top right, blue bottom left, yellow bottom right.
Code is as follows:
ID3D11Resource *g_pOverlay_Staging = nullptr;
IWICImagingFactory* WICFactory = nullptr;
IWICBitmapDecoder * WICBitmapDecoder = nullptr;
IWICBitmapFrameDecode * WICBitmapFrame = nullptr;
WICPixelFormatGUID pixelFormat;
HR(CoCreateInstance(CLSID_WICImagingFactory, nullptr, CLSCTX_INPROC_SERVER, __uuidof(IWICImagingFactory), (LPVOID*)&WICFactory));
HR(WICFactory->CreateDecoderFromFilename(L"province_map.bmp", nullptr, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &WICBitmapDecoder));
HR(WICBitmapDecoder->GetFrame(0,&WICBitmapFrame));
HR(WICBitmapFrame->GetPixelFormat(&pixelFormat));
DXGI_FORMAT format;
if (pixelFormat == GUID_WICPixelFormat24bppBGR){
std::wostringstream outs2;
outs2 << "pixelformat = GUID_WICPixelFormat24bppBGR" << std::endl;
OutputDebugString(outs2.str().c_str());
format = DXGI_FORMAT_R8G8B8A8_UNORM;
}
IWICFormatConverter * FC = nullptr;
WICFactory->CreateFormatConverter(&FC);
HR(FC->Initialize(WICBitmapFrame, GUID_WICPixelFormat32bppRGBA, WICBitmapDitherTypeErrorDiffusion, 0, 0, WICBitmapPaletteTypeCustom));
std::unique_ptr<uint8_t[]> temp(new uint8_t[16]);
HR(FC->CopyPixels(0, 8, 16, temp.get()));
D3D11_TEXTURE2D_DESC desc;
desc.Width = 2;
desc.Height = 2;
desc.MipLevels = 1;
desc.ArraySize = 1;
desc.Format = format;
desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_STAGING;
desc.BindFlags = 0;
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE | D3D11_CPU_ACCESS_READ;
desc.MiscFlags = 0;
D3D11_SUBRESOURCE_DATA initData;
initData.pSysMem = temp.get();
initData.SysMemPitch = 8;
initData.SysMemSlicePitch = 16;
ID3D11Texture2D* tex = nullptr;
HR(d3d11DeviceInterface->CreateTexture2D(&desc, &initData, &tex));
g_pOverlay_Staging = tex;
D3D11_MAPPED_SUBRESOURCE mapped_subresource;
HR(d3d11DeviceContextInterface->Map(g_pOverlay_Staging, 0, D3D11_MAP_READ_WRITE, 0, &mapped_subresource));
uint8_t * v = reinterpret_cast<uint8_t*>(mapped_subresource.pData);
unsigned int x = 0;
while (x < 256 ) {
std::bitset<8> one(v[x]);
std::bitset<8> two(v[x+1]);
std::bitset<8> three(v[x+2]);
std::bitset<8> four(v[x + 3]);
std::wostringstream outs1;
outs1 << "x[" << x << "] = " << one << " x[" << x + 1 << "] = " << two << " x[" << x + 2 << "] = " << three << " x[" << x + 3 << "] = " << four << std::endl;
OutputDebugString(outs1.str().c_str());
x += 4;
}
Output is:
pixelformat = GUID_WICPixelFormat24bppBGR
x[0] = 11111111 x[1] = 00000000 x[2] = 00000000 x[3] = 11111111
x[4] = 00000000 x[5] = 11111111 x[6] = 00000000 x[7] = 11111111
x[8] = 00000000 x[9] = 00000000 x[10] = 00000000 x[11] = 00000000
x[12] = 00000000 x[13] = 00000000 x[14] = 00000000 x[15] = 00000000
x[16] = 00000000 x[17] = 00000000 x[18] = 00000000 x[19] = 00000000
x[20] = 00000000 x[21] = 00000000 x[22] = 00000000 x[23] = 00000000
x[24] = 00000000 x[25] = 00000000 x[26] = 00000000 x[27] = 00000000
x[28] = 00000000 x[29] = 00000000 x[30] = 00000000 x[31] = 00000000
x[32] = 00000000 x[33] = 00000000 x[34] = 00000000 x[35] = 00000000
x[36] = 00000000 x[37] = 00000000 x[38] = 00000000 x[39] = 00000000
x[40] = 00000000 x[41] = 00000000 x[42] = 00000000 x[43] = 00000000
x[44] = 00000000 x[45] = 00000000 x[46] = 00000000 x[47] = 00000000
x[48] = 00000000 x[49] = 00000000 x[50] = 00000000 x[51] = 00000000
x[52] = 00000000 x[53] = 00000000 x[54] = 00000000 x[55] = 00000000
x[56] = 00000000 x[57] = 00000000 x[58] = 00000000 x[59] = 00000000
x[60] = 00000000 x[61] = 00000000 x[62] = 00000000 x[63] = 00000000
x[64] = 00000000 x[65] = 00000000 x[66] = 00000000 x[67] = 00000000
x[68] = 00000000 x[69] = 00000000 x[70] = 00000000 x[71] = 00000000
x[72] = 00000000 x[73] = 00000000 x[74] = 00000000 x[75] = 00000000
x[76] = 00000000 x[77] = 00000000 x[78] = 00000000 x[79] = 00000000
x[80] = 00000000 x[81] = 00000000 x[82] = 00000000 x[83] = 00000000
x[84] = 00000000 x[85] = 00000000 x[86] = 00000000 x[87] = 00000000
x[88] = 00000000 x[89] = 00000000 x[90] = 00000000 x[91] = 00000000
x[92] = 00000000 x[93] = 00000000 x[94] = 00000000 x[95] = 00000000
x[96] = 00000000 x[97] = 00000000 x[98] = 00000000 x[99] = 00000000
x[100] = 00000000 x[101] = 00000000 x[102] = 00000000 x[103] = 00000000
x[104] = 00000000 x[105] = 00000000 x[106] = 00000000 x[107] = 00000000
x[108] = 00000000 x[109] = 00000000 x[110] = 00000000 x[111] = 00000000
x[112] = 00000000 x[113] = 00000000 x[114] = 00000000 x[115] = 00000000
x[116] = 00000000 x[117] = 00000000 x[118] = 00000000 x[119] = 00000000
x[120] = 00000000 x[121] = 00000000 x[122] = 00000000 x[123] = 00000000
x[124] = 00000000 x[125] = 00000000 x[126] = 00000000 x[127] = 00000000
x[128] = 00000000 x[129] = 00000000 x[130] = 11111111 x[131] = 11111111
x[132] = 11111111 x[133] = 11111111 x[134] = 00000000 x[135] = 11111111
x[136] = 00000000 x[137] = 00000000 x[138] = 00000000 x[139] = 00000000
x[140] = 00000000 x[141] = 00000000 x[142] = 00000000 x[143] = 00000000
x[144] = 00000000 x[145] = 00000000 x[146] = 00000000 x[147] = 00000000
x[148] = 00000000 x[149] = 00000000 x[150] = 00000000 x[151] = 00000000
x[152] = 00000000 x[153] = 00000000 x[154] = 00000000 x[155] = 00000000
x[156] = 00000000 x[157] = 00000000 x[158] = 00000000 x[159] = 00000000
x[160] = 00000000 x[161] = 00000000 x[162] = 00000000 x[163] = 00000000
x[164] = 00000000 x[165] = 00000000 x[166] = 00000000 x[167] = 00000000
x[168] = 00000000 x[169] = 00000000 x[170] = 00000000 x[171] = 00000000
x[172] = 00000000 x[173] = 00000000 x[174] = 00000000 x[175] = 00000000
x[176] = 00000000 x[177] = 00000000 x[178] = 00000000 x[179] = 00000000
x[180] = 00000000 x[181] = 00000000 x[182] = 00000000 x[183] = 00000000
x[184] = 00000000 x[185] = 00000000 x[186] = 00000000 x[187] = 00000000
x[188] = 00000000 x[189] = 00000000 x[190] = 00000000 x[191] = 00000000
x[192] = 00000000 x[193] = 00000000 x[194] = 00000000 x[195] = 00000000
x[196] = 00000000 x[197] = 00000000 x[198] = 00000000 x[199] = 00000000
x[200] = 00000000 x[201] = 00000000 x[202] = 00000000 x[203] = 00000000
x[204] = 00000000 x[205] = 00000000 x[206] = 00000000 x[207] = 00000000
x[208] = 00000000 x[209] = 00000000 x[210] = 00000000 x[211] = 00000000
x[212] = 00000000 x[213] = 00000000 x[214] = 00000000 x[215] = 00000000
x[216] = 00000000 x[217] = 00000000 x[218] = 00000000 x[219] = 00000000
x[220] = 00000000 x[221] = 00000000 x[222] = 00000000 x[223] = 00000000
x[224] = 00000000 x[225] = 00000000 x[226] = 00000000 x[227] = 00000000
x[228] = 00000000 x[229] = 00000000 x[230] = 00000000 x[231] = 00000000
x[232] = 00000000 x[233] = 00000000 x[234] = 00000000 x[235] = 00000000
x[236] = 00000000 x[237] = 00000000 x[238] = 00000000 x[239] = 00000000
x[240] = 00000000 x[241] = 00000000 x[242] = 00000000 x[243] = 00000000
x[244] = 00000000 x[245] = 00000000 x[246] = 00000000 x[247] = 00000000
x[248] = 00000000 x[249] = 00000000 x[250] = 00000000 x[251] = 00000000
x[252] = 00000000 x[253] = 00000000 x[254] = 00000000 x[255] = 00000000
This is expected. After you've uploaded texture memory to the GPU, if you Map it back for read, there's no guarantee that it will come back with the same pitch that you uploaded it as. This is because on upload, the driver re-lays out memory in a way that's optimal for rendering. When you bring it back to the CPU, the driver efficiently converts it back to linear format, usually in a way that reflects various properties of the texture cache or page size.
I have a weird problem on my production server. There are Ubuntu server, nginx + phusion passenger installed on it. I manage my ruby version with rvm and it's ruby 1.9.3-p327 and rails 3.2.9.
Sometimes, it's impossible to deploy my app because the rake asset:precompile task failed. When I try to execute this directly on my server I have the same problem. Same trace when I run bundle exec rails c production
Here a part (the end) of the trace (I'm sorry, I don't have the complete trace because it's too long):
3.2.0/lib/paperclip.rb
966 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/ancestry-1.3.0/lib/ancestry/class_methods.rb
967 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/ancestry-1.3.0/lib/ancestry/instance_methods.rb
968 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/ancestry-1.3.0/lib/ancestry/exceptions.rb
* Process memory map:
00400000-00401000 r-xp 00000000 09:02 50595451 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
00600000-00601000 r--p 00000000 09:02 50595451 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
00601000-00602000 rw-p 00001000 09:02 50595451 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
00602000-037a4000 rw-p 00000000 00:00 0 [heap]
7f19e615d000-7f19e615e000 rw-p 00000000 00:00 0
7f19e615e000-7f19e6188000 r-xp 00000000 09:02 50594719 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/socket.so
7f19e6188000-7f19e6387000 ---p 0002a000 09:02 50594719 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/socket.so
7f19e6387000-7f19e6388000 r--p 00029000 09:02 50594719 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/socket.so
7f19e6388000-7f19e6389000 rw-p 0002a000 09:02 50594719 /home/deploy/.rvm/rubies/ruby-1.
9.3-p286/lib/ruby/1.9.1/x86_64-linux/socket.so
7f19e6389000-7f19e638e000 r-xp 00000000 09:02 50594729 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/racc/cparse.so
7f19e638e000-7f19e658d000 ---p 00005000 09:02 50594729 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/racc/cparse.so
7f19e658d000-7f19e658e000 r--p 00004000 09:02 50594729 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/li
b/ruby/1.9.1/x86_64-linux/racc/cparse.so
7f19e658e000-7f19e658f000 rw-p 00005000 09:02 50594729 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/racc/cparse.so
7f19e658f000-7f19e6590000 r-xp 00000000 09:02 50594733 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest/md5.so
7f19e6590000-7f19e678f000 ---p 00001000 09:02 50594733 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest/md5.so
7f19e678f000-7f19e6790000 r--p 00000000 09:02 50594733 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest/md5.so
7f19e6790000-7f19e6791000 rw-p 00001000 09:02 50594733 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest/md5.so
7f19e6791000-7f19e67d1000 rw-p 00000000 00:00 0
7f19e67d1000-7f19e67d2000 ---p 00000000 00:00 0
7f1a0b2e9000-7f1a0b2ea000 r--p 00014000 09:01 132081 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1a0b2ea000-7f1a0b2eb000 rw-p 00015000 09:01 132081 /lib/x86_64-linux-gnu/libgcc_s.so.1
7f1a0b2eb000-7f1a0b3cd000 r-xp 00000000 09:01 399334 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7f1a0b3cd000-7f1a0b5cc000 ---p 000e2000 09:01 399334 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7f1a0b5cc000-7f1a0b5d4000 r--p 000e1000 09:01 399334 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7f1a0b5d4000-7f1a0b5d6000 rw-p 000e9000 09:01 399334 /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.16
7f1a0b5d6000-7f1a0b5eb000 rw-p 00000000 00:00 0
7f1a0b5eb000-7f1a0b988000 r-xp 00000000 09:02 50987342 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/therubyracer-0.10.2/ext/v8/v8.so
7f1a0b988000-7f1a0bb88000 ---p 0039d000 09:02 50987342 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/therubyracer-0.10.2/ext/v8/v8.so
7f1a0bb88000-7f1a0bbab000 r--p 0039d000 09:02 50987342 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/therubyracer-0.10.2/ext/v8/v8.so
7f1a0bbab000-7f1a0bbaf000 rw-p 003c0000 09:02 50987342 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/therubyracer-0.10.2/ext/v8/v8.so
7f1a0bbaf000-7f1a0bbb2000 rw-p 00000000 00:00 0
7f1a0bbb2000-7f1a0bc50000 r-xp 00000000 09:01 398982 /usr/lib/x86_64-
7f1a0be9a000-7f1a0c09a000 ---p 00045000 09:01 399309 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7f1a0c09a000-7f1a0c09c000 r--p 00045000 09:01 399309 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7f1a0c09c000-7f1a0c09e000 rw-p 00047000 09:01 399309 /usr/lib/x86_64-linux-gnu/libhx509.so.5.0.0
7f1a0c09e000-7f1a0c09f000 rw-p 00000000 00:00 0
7f1a0c4d6000-7f1a0c4d7000 rw-p 00028000 09:01 399337 /usr/lib/x86_64-linux-gnu/libwind.so.0.0.0
7f1a0c4d7000-7f1a0c4da000 r-xp 00000000 09:01 132084 /lib/x86_64-linux-gnu/libgpg-error.so.0.8.0
7f1a0c4da000-7f1a0c6d9000 ---p 00003000 09:01 132084 /lib/x86_64-linux-gnu/libgpg-error.so.0.8.0
7f1a0c6d9000-7f1a0c6da000 r--p 00002000 09:01 132084 /lib/x86_64-linux-gnu/libgpg-error.so.0.8.0
7f1a0c6da000-7f1a0c6db000 rw-p 00003000 09:01 132084 /lib/x86_64-linux-gnu/libgpg-error.so.0.8.0
7f1a0c6db000-7f1a0c6ec000 r-xp 00000000 09:01 399321 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.0.0
7f1a0c6ec000-7f1a0c8eb000 ---p 00011000 09:01 399321 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.0.0
7f1a0c8eb000-7f1a0c8ec000 r--p 00010000 09:01 399321 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.0.0
7f1a0c8ec000-7f1a0c8ed000 rw-p 00011000 09:01 399321 /usr/lib/x86_64-linux-gnu/libp11-kit.so.0.0.0
7f1a0c8ed000-7f1a0c8fd000 r-xp 00000000 09:01 403677 /usr/lib/x86_64-linux-gnu/libtasn1.so.3.1.12
7f1a0c8fd000-7f1a0cafc000 ---p 00010000 09:01 403677 /usr/lib/x86_64-linux-gnu/libtasn1.so.3.1.12
7f1a0cafc000-7f1a0cafd000 r--p 0000f000 09:01 403677 /usr/lib/x86_64-linux-gnu/libtasn1.so.3.1.12
7f1a0cafd000-7f1a0cafe000 rw-p 00010000 09:01 403677 /usr/lib/x86_64-linux-gnu/libtasn1.so.3.1.12
7f1a0cafe000-7f1a0cb12000 r-xp 00000000 09:01 399329 /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7f1a0cb12000-7f1a0cd11000 ---p 00014000 09:01 399329 /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7f1a0cd11000-7f1a0cd12000 r--p 00013000 09:01 399329 /usr/lib/x86_64-linux-gnu/libroken.so.18.1.0
7f1a0cf45000-7f1a0cf46000 rw-p 00032000 09:01 399306 /usr/lib/x86_64-linux-gnu/libhcrypto.so.4.1.0
7f1a0cf46000-7f1a0cf47000 rw-p 00000000 00:00 0
7f1a0cf47000-7f1a0cfe2000 r-xp 00000000 09:01 399279 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7f1a0cfe2000-7f1a0d1e1000 ---p 0009b000 09:01 399279 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7f1a0d1e1000-7f1a0d1e3000 r--p 0009a000 09:01 399279 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7f1a0d1e3000-7f1a0d1e7000 rw-p 0009c000 09:01 399279 /usr/lib/x86_64-linux-gnu/libasn1.so.8.0.0
7f1a0d1e7000-7f1a0d267000 r-xp 00000000 09:01 399312 /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7f1a0d267000-7f1a0d467000 ---p 00080000 09:01 399312 /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7f1a0d467000-7f1a0d469000 r--p 00080000 09:01 399312 /usr/lib/x86_64-linux-gnu/lib
krb5.so.26.0.0
7f1a0d469000-7f1a0d46d000 rw-p 00082000 09:01 399312 /usr/lib/x86_64-linux-gnu/libkrb5.so.26.0.0
7f1a0d46d000-7f1a0d473000 r-xp 00000000 09:01 399308 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7f1a0d473000-7f1a0d672000 ---p 00006000 09:01 399308 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7f1a0d672000-7f1a0d673000 r--p 00005000 09:01 399308 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7f1a0d673000-7f1a0d674000 rw-p 00006000 09:01 399308 /usr/lib/x86_64-linux-gnu/libheimntlm.so.0.1.0
7f1a0d674000-7f1a0d6ee000 r-xp 00000000 09:01 131966 /lib/x86_64-linux-gnu/libgcrypt.so.11.7.0
7f1a0d6ee000-7f1a0d8ee000 ---p 0007a000 09:01 131966 /lib/x86_64-linux-gnu/libgcrypt.so.11.7.0
7f1a0d8ee000-7f1a0d8ef000 r--p 0007a000 09:01 131966 /lib/x86_64-linux-gnu/libgcrypt.so.11.7.0
7f1a0d8ef000-7f1a0d8f2000 rw-p 0007b000 09:01 131966 /lib/x86_64-linux-gnu/libgcrypt.so.11.7.0
7f1a0d8f2000-7f1a0d9a6000 r-xp 00000000 09:01 398964 /usr/lib/x86_64-linux-gnu/libgnutls.so.26.21.8
7f1a0d9a6000-7f1a0dba6000 ---p 000b4000 09:01 398964 /usr/lib/x86_64-linux-gnu/libgnutls.so.26.21.8
7f1a0dba6000-7f1a0dbac000 r--p 000b4000 09:01 398964 /usr/lib/x86_64-linux-gnu/libgnutls.so.26.21.8
7f1a0dbac000-7f1a0dbad000 rw-p 000ba000 09:01 398964 /usr/lib/x86_64-linux-gnu/libgnutls.so.26.21.8
7f1a0dbad000-7f1a0dbae000 rw-p 00000000 00:00 0
7f1a0dbae000-7f1a0dbe8000 r-xp 00000000 09:01 399303 /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
7f1a0dbe8000-7f1a0dde8000 ---p 0003a000 09:01 399303 /usr/lib/x86_64-
7f1a0e213000-7f1a0e214000 r--p 0000c000 09:01 403690 /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.8.1
7f1a0e214000-7f1a0e215000 rw-p 0000d000 09:01 403690 /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2.8.1
7f1a0e215000-7f1a0e22d000 r-xp 00000000 09:01 132255 /lib/x86_64-
7f1a0eeef000-7f1a0eef0000 r--p 0003b000 09:01 398940 /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2
7f1a0eef0000-7f1a0eef2000 rw-p 0003c000 09:01 398940 /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2
7f1a0eef2000-7f1a0eef5000 r-xp 00000000 09:01 132073 /lib/x86_64-linux-gnu/libcom_err.so.2.1
7f1a0eef5000-7f1a0f0f4000 ---p 00003000 09:01 132073 /lib/x86_64-linux-gnu/libc
om_err.so.2.1
7f1a0f0f4000-7f1a0f0f5000 r--p 00002000 09:01 132073 /lib/x86_64-linux-gnu/libcom_err.so.2.1
7f1a0f0f5000-7f1a0f0f6000 rw-p 00003000 09:01 132073 /lib/x86_64-linux-gnu/libcom_err.so.2.1
7f1a0f0f6000-7f1a0f1ba000 r-xp 00000000 09:01 398933 /usr/lib/x86_64-linux-gnu/libkrb5.so.3.3
7f1a0f1ba000-7f1a0f3b9000 ---p 000c4000 09:01 398933 /usr/lib/x86_64-linux-gnu/libkrb5.so.3.3
7f1a0f3b9000-7f1a0f3c3000 r--p 000c3000 09:01 398933 /usr/lib/x86_64-linux-gnu/libkrb5.so.3.3
7f1a0f3c3000-7f1a0f3c4000 rw-p 000cd000 09:01 398933 /usr/lib/x86_64-linux-gnu/libkrb5.so.3.3
7f1a0f3c4000-7f1a0f3ed000 r-xp 00000000 09:01 408194 /usr/lib/libpq.so.5.4
7f1a0f3ed000-7f1a0f5ec000 ---p 00029000 09:01 408194 /usr/lib/libpq.so.5.4
7f1a0f5ec000-7f1a0f5ee000 r--p 00028000 09:01 408194 /usr/lib/libpq.so.5.4
7f1a0f5ee000-7f1a0f5f0000 rw-p 0002a000 09:01 408194 /usr/lib/libpq.so.5.4
7f1a0f5f0000-7f1a0f601000 r-xp 00000000 09:02 50728854 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/pg-0.14.1/lib/pg_ext.so
7f1a0f601000-7f1a0f801000 ---p 00011000 09:02 50728854 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/pg-0.14.1/lib/pg_ext.so
7f1a0f801000-7f1a0f802000 r--p 00011000 09:02 50728854 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/pg-0.14.1/lib/pg_ext.so
7f1a
0f802000-7f1a0f803000 rw-p 00012000 09:02 50728854 /home/deploy/www/limouzi/shared/bundle/ruby/1.9.1/gems/pg-0.14.1/lib/pg_ext.so
7f1a0f803000-7f1a0f816000 r-xp 00000000 09:02 50594709 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/bigdecimal.so
7f1a0f816000-7f1a0fa15000 ---p 00013000 09:02 50594709 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/bigdecimal.so
7f1a0fa15000-7f1a0fa16000 r--p 00012000 09:02 50594709 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/bigdecimal.so
7f1a0fa16000-7f1a0fa17000 rw-p 00013000 09:02 50594709 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/bigdecimal.so
7f1a0fa17000-7f1a0fa18000 r-xp 00000000 09:02 50594712 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7f1a0fa18000-7f1a0fc17000 ---p 00001000 09:02 50594712 /home/deploy/.rvm/rubies/rub
y-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7f1a0fc17000-7f1a0fc18000 r--p 00000000 09:02 50594712 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7f1a0fc18000-7f1a0fc19000 rw-p 00001000 09:02 50594712 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7f1a0fc19000-7f1a0fc6b000 r-xp 00000000 09:01 131958 /lib/x86_64-linux-gnu/libssl.so.1.0.0
7f1a0fc6b000-7f1a0fe6b000 ---p 00052000 09:01 131958 /lib/x86_64-linux-gnu/libssl.so.1.0.0
7f1a0fe6b000-7f1a0fe6e000 r--p 00052000 09:01 131958 /lib/x86_64-linux-gnu/libssl.so.1.0.0
7f1a0fe6e000-7f1a0fe74000 rw-p 00055000 09:01 131958 /lib/x86_6
4-linux-gnu/libssl.so.1.0.0
7f1a0fe74000-7f1a0fe75000 rw-p 00000000 00:00 0
7f1a0fe75000-7f1a0fecc000 r-xp 00000000 09:02 50594724 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/openssl.so
7f1a0fecc000-7f1a100cc000
---p 00057000 09:02 50594724 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/openssl.so
7f1a100cc000-7f1a100cd000 r--p 00057000 09:02 50594724 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/openssl.so
7f1a100cd000-7f1a100cf000 rw-p 00058000 09:02 50594724 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/openssl.so
7f1a100cf000-7f1a100d0000 rw-p 00000000 00:00 0
7f1a100d0000-7f1a100df000 r-xp
00000000 09:02 50594723 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/zlib.so
7f1a100df000-7f1a102de000 ---p 0000f000 09:02 50594723 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/zlib.so
7f1a102de000-7f1a102df000 r--p 0000e000 09:02 50594723 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/zlib.so
7f1a102df000-7f1a102e0000 rw-p 0000f000 09:02 50594723 /home/deploy/.rvm/r
ubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/zlib.so
7f1a102e0000-7f1a102e2000 r-xp 00000000 09:02 50594806 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/iso_8859_1.so
7f1a102e2000-7f1a104e1000 ---p 00002000 09:02 50594806 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/iso_8859_1.so
7f1a104e1000-7f1a104e2000 r--p 00001000 09:02 50594806 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/iso_8859_1.so
7f1a104e2000-7f1a104e3000 rw-p 00002000 09:02 50594806 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/iso_8859_1.so
7f1a104e3000-7f1a104e6000 r-xp 00000000 09:02 50594833
/home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest.so
7f1a104e6000-7f1a106e5000 ---p 00003000 09:02 50594833 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest.so
7f1a106e5000-7f1a106e6
000 r--p 00002000 09:02 50594833 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest.so
7f1a106e6000-7f1a106e7000 rw-p 00003000 09:02 50594833 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest.so
7f1a106e7000-7f1a106fd000 r-xp 00000000 09:01 132127 /lib/x86_64-linux-gnu/libz.so.1.2.3.4
7f1a106fd000-7f1a108fc000 ---p 00016000 09:01 132127 /lib/x86_64-linux-gnu/libz.so.1.2.3.4
7f1a108fc000-7f1a108fd000 r--p 00015000 09:01 132127 /lib/x86_64-linux-gnu/libz.so.1.2.3.4
7f1a108fd000-7f1a108fe000 rw-p 00016000 09:01 132127 /lib/x86_64-linux-gnu/libz.so.1.2.3.4
7f1a108fe000-7f1a10a9d000 r-xp 00000000 09
:01 131959 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f1a10a9d000-7f1a10c9c000 ---p 0019f000 09:01 131959 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f1a10c9c000-7f1a10cb7000 r--p 0019e000 09:01 131959
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f1a10cb7000-7f1a10cc2000 rw-p 001b9000 09:01 131959 /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7f1a10cc2000-7f1a10cc6000 rw-p 00000000 00:00 0
7f1a10cc6000-7f1a10cc7000 r-xp 00000000 09:02 50594731 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest/sha1.so
7f1a10cc7000-7f1a10ec6000 ---p 00001000 09:02 50594731 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest
/sha1.so
7f1a10ec6000-7f1a10ec7000 r--p 00000000 09:02 50594731 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest/sha1.so
7f1a10ec7000-7f1a10ec8000 rw-p 00001000 09:02 50594731 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/digest/sha1.so
7f1a10ec8000-7f1a10efa000 r-xp 00000000 09:02 50594827 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/date_core.so
7f1a10efa000-7f1a110fa000 ---p 000
32000 09:02 50594827 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/date_core.so
7f1a110fa000-7f1a110fb000 r--p 00032000 09:02 50594827 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/date_core.so
7f1a110fb000-7f1a110fd000 rw-p 00033000 09:02 50594827 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/date_core.so
7f1a110fd000-7f1a110fe000 rw-p 00000000 00:00 0
7f1a110fe000-7f1a11104000 r-xp 00000000 09:02 50594828 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/strscan.so
7f1a11104000-7f1a11303000 ---p 00006000 09:02 50594828 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64
-linux/strscan.so
7f1a11303000-7f1a11304000 r--p 00005000 09:02 50594828 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/strscan.so
7f1a11304000-7f1a11305000 rw-p 00006000 09:02 50594828 /home/deploy
/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/strscan.so
7f1a11305000-7f1a1130c000 r-xp 00000000 09:02 50594711 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/stringio.so
7f1a1130c000-7f1a1150b000 ---p 00007000 09:02 50594711 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/stringio.so
7f1a1150b000-7f1a1150c000 r--p 00006000 09:02 50594711 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-
linux/stringio.so
7f1a1150c000-7f1a1150d000 rw-p 00007000 09:02 50594711 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/stringio.so
7f1a1150d000-7f1a1152d000 r-xp 00000000 09:02 50467319 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libyaml-0.so.2.0.2
7f1a1152d000-7f1a1172c000 ---p 00020000 09:02 50467319 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libyaml-0.so.2.0.2
7f1a1172c000-7f1a1172d000 r--p 0001f000 09:02 50467319
/home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libyaml-0.so.2.0.2
7f1a1172d000-7f1a1172e000 rw-p 00020000 09:02 50467319 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libyaml-0.so.2.0.2
7f1a1172e000-7f1a11735000 r-xp 00000000 09:02 50594746 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/psych.so
7f1a11735000-7f1a11934000 ---p 00007000 09:02 50594746 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/psych.so
7f
1a11934000-7f1a11935000 r--p 00006000 09:02 50594746 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/psych.so
7f1a11935000-7f1a11936000 rw-p 00007000 09:02 50594746 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/psych.so
7f1a11936000-7f1a11939000 r-xp 00000000 09:02 50594736 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/etc.so
7f1a11939000-7f1a11b38000 ---p 00003000 09:02 50594736
/home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/etc.so
7f1a11b38000-7f1a11b39000 r--p 00002000 09:02 50594736 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/etc.so
7f1a11b39000-7f1a11b3a000 rw-p 00003000 09:02 50594736 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/etc.so
7f1a11b3a000-7f1a11b40000 r-xp 00000000 09:02 50594832 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/pathname.so
7f1a11b40000-7f1a11d40000 ---p 00006000 09:02 50594832 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/pathname.so
7f1a11d40000-7f1a11d41000 r--p 00006000 09:02 50594832 /ho
me/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/pathname.so
7f1a11d41000-7f1a11d42000 rw-p 00007000 09:02 50594832 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/pathname.so
7f1a11d42000-7f1a11d4400
0 r-xp 00000000 09:02 50594801 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7f1a11d44000-7f1a11f44000 ---p 00002000 09:02 50594801 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7f1a11f44000-7f1a11f45000 r--p 00002000 09:02 50594801 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7f1a11f45000-7f1a11f46000 rw-p 00003000 09:02 50594801 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7f1a11f46000-7f1a11f48000 r-xp 00000000 09:02 50594756 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linu
x/enc/encdb.so
7f1a11f48000-7f1a12147000 ---p 00002000 09:02 50594756 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7f1a12147000-7f1a12148000 r--p 00001000 09:02 50594756 /home/deploy/
.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7f1a12148000-7f1a12149000 rw-p 00002000 09:02 50594756 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7f1a12149000-7f1a1234c000 r--p 00000000 09:01 394409 /usr/lib/locale/locale-archive
7f1a1234c000-7f1a12447000 r-xp 00000000 09:01 132258 /lib/x86_64-linux-gnu/libm-2.15.so
7f1a12447000-7f1a12646000 ---p 000fb000 09:01 132258 /lib/x86_64-linux-gnu/libm-2.15.so
7f1a12646000-7f1a12647000 r--p 000fa000 09:01 132258 /lib/x86_64-linux-gnu/libm-2.15.so
7f1a12647000-7f1a12648000 rw-p 000fb000 09:01 132258 /lib/x86_64-linux-gnu/libm-2.15.so
7f1a1264
8000-7f1a12651000 r-xp 00000000 09:01 132259 /lib/x86_64-linux-gnu/libcrypt-2.15.so
7f1a12651000-7f1a12851000 ---p 00009000 09:01 132259 /lib/x86_64-linux-gnu/libcrypt-2.15.so
7f1a12851000-7f1a12852000 r--p 00009000
09:01 132259 /lib/x86_64-linux-gnu/libcrypt-2.15.so
7f1a12a85000-7f1a12a8c000 r-xp 00000000 09:01 132254 /lib/x86_64-linux-gnu/libr
t-2.15.so
7f1a12a8c000-7f1a12c8b000 ---p 00007000 09:01 132254 /lib/x86_64-linux-gnu/librt-2.15.so
7f1a12c8b000-7f1a12c8c000 r--p 00006000 09:01 132254 /lib/x86_64-linux-gnu/librt-2.15.so
7f1a12c8c000-7f1a12c8d000 rw
-p 00007000 09:01 132254 /lib/x86_64-linux-gnu/librt-2.15.so
7f1a12c8d000-7f1a12ca5000 r-xp 00000000 09:01 132252 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f1a12ca5000-7f1a12ea4000 ---p 00018000 09:01 132252 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f1a12ea4000-7f1a12ea5000 r--p 00017000 09:01 132252 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f1a12ea5000-7f1a12ea6000 rw-p 00018000 09:01 132252 /lib/x86_64-linux-gnu/libpthread-2.15.so
7f1a12ea6000-7f1a12eaa000 rw-p 00000000 00:00 0
7f1a12eaa000-7f1a1305f000 r-xp 00000000 09:01 132250 /lib/x86_64-linux-gnu/libc-2.15.so
7f1a1305f000-7f1a1325e000 ---p 001b5000 09:01 132250 /
lib/x86_64-linux-gnu/libc-2.15.so
7f1a1325e000-7f1a13262000 r--p 001b4000 09:01 132250 /lib/x86_64-linux-gnu/libc-2.15.so
7f1a13262000-7f1a13264000 rw-p 001b8000 09:01 132250 /lib/x86_64-linux-gnu/libc-2.15.so
7f1a13
264000-7f1a13269000 rw-p 00000000 00:00 0
7f1a13269000-7f1a134a7000 r-xp 00000000 09:02 50467318 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libruby.so.1.9.1
7f1a134a7000-7f1a136a6000 ---p 0023e000 09:02 50467318 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libruby.so.1.9.1
7f1a136a6000-7f1a136ab000 r--p 0023d000 09:02 50467318 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libruby.so.1.9.1
7f1a136ab000-7f1a136af000 rw-p 00242000 09:02 50467318 /home/deploy/.rvm/rubies/ruby-1.9.3-p286/lib/libruby.so.1.9.1
7f1a136af000-7f1a136cd000 rw-p 00000000 00:00 0
7f1a136cd000-7f1a136ef000 r-xp 00000000 09:01 132264 /lib/x86_64-linux-gnu/ld-2.15.so
7f1a13718000-7f1a137d8000 rw-p
00000000 00:00 0
7f1a137d8000-7f1a137df000 r--s 00000000 09:01 400807 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7f1a137df000-7f1a138e5000 rw-p 00000000 00:00 0
7f1a138e9000-7f1a138ea000 ---p 00000000 00:00 0
7f1a138ea000-7
f1a138ef000 rw-p 00000000 00:00 0
7f1a138ef000-7f1a138f0000 r--p 00022000 09:01 132264 /lib/x86_64-linux-gnu/ld-2.15.so
7f1a138f0000-7f1a138f2000 rw-p 00023000 09:01 132264 /lib/x86_64-linux-gnu/ld-2.15.so
7fffa4851000-7fffa4872000 rw-p 00000000 00:00 0 [stack]
7fffa494e000-7fffa494f000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r--p 00000000 00:00 0 [vsyscall]
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
What is interesting is the end of the trace, which said there is a bug in the ruby interpreter. One time I have the beginning of the trace and It said something like this: *** glibc detected *** ruby: double free or corruption (!prev)
For the moment to fix the bug I need to restart nginx. It's for this reason I ask this question: Is it a conflict between ruby and nginx or inside ruby interpreter? And how to solve this?
Thanks
Edit :
Error already appear. I wonder if it's not a problem due to ImageMagick. Indeed a cron task execute some times by a day an upload of pictures. When there are not lot of pictures everything seems to be fine. But when there is about 100 pictures every two hours I have the feeling that the error appear. I will inspect this way. If somebody have an idea...
Try, export MALLOC_CHECK_=2. Because of this glibc will do extra level of checking during free(), to avoid heap corruption. It will abort() and give a core dump as soon as it detects corruption, instead of waiting until there's an actual problem caused by the corruption.
or use http://valgrind.org/ for more details.