New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
neomutt crashes with hcache #188
Comments
From @hurricanehrndz's debugging:
|
More with some debug info, still need to install more debug packages.
|
full debug
|
Thanks for the improved debugging. That's the sort of backtrace I was hoping for. I spent some time looking at this yesterday, but the news isn't good. Then, I examined neomutt's call to the database. It creates a database object, then opens the database. The open call takes a path, but at open time, it doesn't do anything with it, AFAICS. As long as the path isn't NULL, the open succeeds. Please can you compile and run this test program: /* gcc -Wall -lkyotocabinet -o kc-open kc-open.c */
#include <stdio.h>
#include <kclangc.h>
int
main (int argc, char *argv[])
{
if (argc != 2)
return 1;
KCDB *db = kcdbnew();
if (db == NULL) {
printf ("Couldn't create new database\n");
return 1;
}
printf ("Opening database: %s\n", argv[1]);
if (!kcdbopen (db, argv[1], KCOWRITER | KCOCREATE)) {
printf ("Couldn't open database\n");
return 1;
}
printf ("Success\n");
kcdbdel (db);
return 0;
} And try running it with a variety of options:
|
Tests ran, always returned 0. |
/* gcc -Wall -lkyotocabinet -o kc-open kc-open.c */
#include <stdio.h>
#include <kclangc.h>
int compress = 1;
int
main (int argc, char *argv[])
{
if (argc != 2)
return 1;
KCDB *db = kcdbnew();
if (db == NULL) {
printf ("Couldn't create new database\n");
return 1;
}
char buffer[1024];
snprintf (buffer, sizeof(buffer), "%s#type=kct#opts=%s#rcomp=lex", argv[1], compress ? "lc" : "l");
printf ("Opening database: %s\n", buffer);
if (!kcdbopen (db, argv[1], KCOWRITER | KCOCREATE)) {
printf ("Couldn't open database\n");
return 1;
}
printf ("Success\n");
kcdbdel (db);
return 0;
} |
So, from further debugging: The crashing instruction is |
OK, this was an interesting ride: SuSE's libkyotocabinet packages (I didn't find the exact package used, but it's probably similar enough) seem to encode the instruction Intel's manual does not indicate support for this type of XOP encoding at all. I'm convinced this is not a problem with NeoMutt, but with the build of kyoto cabinet you are using. Please report this to your distribution. |
@neverpanic Could please provide the documentation that states the prefix |
@hurricanehrndz See the AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions, section 1.2.8 VEX and XOP Prefixes, paragraph 2, sentence 2:
Intel's equivalent, the Intel® 64 and IA-32 architectures software developer's manual combined volumes 2A, 2B, 2C, and 2D: Instruction set reference, A-Z has its documentation for the VEX prefix in section 2.3.5, paragraph 1, sentence 1, which does not mention
Intel's manual mentions the only encoding for the 64-bit variant of the
Note that this variant of Compare this with AMD's manual on So, unless
I don't think that binary is compatible with Intel CPUs. Do you disagree? |
@neverpanic Thank you so much for the documentation. This will teach me a lot! I appreciate you taking the time. PS I have noticed most rpm base distros are compiling the kyoto library as x86 rather than x86_64 would this have any affect? |
Yes, that would certainly have an effect, because there is no VEX prefix for x86, it only exists for x86_64. Consequently, the I'm not sure what effect the |
But I think I see the problem; if you follow the links in the sidebar of https://build.opensuse.org/package/show/openSUSE:Factory/kyotocabinet to the latest x86_64 build and then open the complete log file at https://build.opensuse.org/public/build/openSUSE:Factory/standard/x86_64/kyotocabinet/_log, you'll see |
Well thank you. Hopefully I have enough info to open an issue. |
In any case, it's obvious that this isn't a NeoMutt issue. I'm closing this ticket. |
When setting hcache back end to kyotocabinet and setting
header_cache
andmessage_cachedir
,I receive an error stating illegal operation.
The text was updated successfully, but these errors were encountered: