Crash removing Format
Richard Kimberly Heck
rikiheck at lyx.org
Mon Jul 6 00:12:07 UTC 2020
On 6/24/20 11:06 AM, Richard Kimberly Heck wrote:
> On 6/24/20 6:19 AM, Kornel Benko wrote:
>> Am Tue, 23 Jun 2020 22:01:03 -0400
>> schrieb Scott Kostyshak <skostysh at lyx.org>:
>>
>>> On Mon, Jun 22, 2020 at 04:55:50PM +0200, Kornel Benko wrote:
>>>> Am Mon, 22 Jun 2020 10:24:17 -0400
>>>> schrieb Richard Kimberly Heck <rikiheck at lyx.org>:
>>>>
>>>>> On 6/22/20 10:03 AM, Kornel Benko wrote:
>>>>>> Following lead to crash:
>>>>>>
>>>>>> 1. Create new file-Format (for instance Epub, define a viewer)
>>>>>> 2. define conversion for docbook-xls -> Epub
>>>>>> 3. restart lyx
>>>>>> 4. remove the new conversion
>>>>>> 5. remove the format Epub --> crash
>>>>>>
>>>>>> There is no crash if
>>>>>> 5. restart lyx
>>>>>> 6. remove the format Epub
>>>>> I can't reproduce.
>>>> You probably need to recompile with "-D_GLIBCXX_DEBUG_PEDANTIC -D_GLIBCXX_DEBUG"
>>>>
>>>>> Can you post your preferences file as it exists after
>>>>> (3)?
>>>>
>>>>> Do you save or apply after (4) or go right to step (5)?
>>>> Apply only. But with save it is the same.
>>> I can reproduce. In addition I get the following:
>>>
>>> Error: attempt to subscript container with out-of-bounds index 21973, but
>>> container only holds 99 elements.
>>>
>>> Scott
>> Here the message is:
>> /usr/include/c++/8/debug/vector:417:
>> Error: attempt to subscript container with out-of-bounds index 1899910496,
>> but container only holds 98 elements.
>>
>> Objects involved in the operation:
>> sequence "this" @ 0x0x555f98a58bc8 {
>> type = std::__debug::vector<lyx::Graph::Vertex, std::allocator<lyx::Graph::Vertex>
>>> ; }
>> Abort (core dumped)
>>
>> If using attached, I got no crash, but the list of indexes used while removing the format
>> is scarifying.
>>
>> $ wc errors
>> 1014 5060 35805 errors
>>
>> $ sort my_list | uniq
>> Graph.cpp (145): VERT-INDEX == 0
>> Graph.cpp (145): VERT-INDEX == 11
>> Graph.cpp (145): VERT-INDEX == 21972
>> Graph.cpp (145): VERT-INDEX == 24
>> Graph.cpp (145): VERT-INDEX == 32
>> Graph.cpp (145): VERT-INDEX == 32757
>> Graph.cpp (145): VERT-INDEX == 33
>> Graph.cpp (145): VERT-INDEX == 71
>> Graph.cpp (145): VERT-INDEX == 79
>> Graph.cpp (145): VERT-INDEX == 8
>> Graph.cpp (145): VERT-INDEX == 80
>> Graph.cpp (145): VERT-INDEX == 83
>>
>> $ egrep 21972 my_list | wc
>> 377 1885 13949
>>
>> $ egrep 32757 my_list | wc
>> 134 670 4958
> I will have a look.
I was able to reproduce with the cmake setting mentioned above, but now
I can't again. I have not been able to reproduce without those settings,
nor do I see the weird values. But something is obviously suspicious.
When I did see the crash, it was coming from Converters::isReachable().
You could try something like the attached, which could yield more
information.
Riki
-------------- next part --------------
diff --git a/src/Converter.cpp b/src/Converter.cpp
index 3487f4b45e..172409873e 100644
--- a/src/Converter.cpp
+++ b/src/Converter.cpp
@@ -989,8 +989,11 @@ bool Converters::isReachable(string const & from, string const & to)
Graph::EdgePath Converters::getPath(string const & from, string const & to)
{
- return G_.getPath(theFormats().getNumber(from),
- theFormats().getNumber(to));
+ int const f = theFormats().getNumber(from);
+ int const t = theFormats().getNumber(to);
+ LYXERR0("From " << from << "==" << f << " to " << to << "==" << t);
+ LATTEST(t < 1000 && f < 1000);
+ return G_.getPath(f, t);
}
More information about the lyx-devel
mailing list