I wanted to close the loop on the SIGTRAP crash that I reported a few days ago.
The issue is probably unique to Fedora, and stems from a huge quantity of
"percent complete" messages that the ngspice library passes back to KiCad. I'm
not kidding when I say huge - it amounts to over 1 megabyte of text, including
many backspace characters. When I try to select the text, it probably blows up
the clipboard and causes the crash.
The ideal fix will be to have the Fedora ngspice maintainer remove a flag,
which in turn will disable the "percent complete" messages.
In the interim, I have a patch that filters out any line containing a string of
backspaces. I don't know if there is any interest in applying this patch to
the official KiCad sources, but I've attached it here in case there is
interest. I see it as defensive programming. :-)
I'll wait a bit to see what happens with the ngspice library. If it looks like
there will be a substantial delay in having the flag removed, I can always
apply my patch and push that as the next official Fedora build.
Steve
On 1/11/19 2:25 PM, Steven A. Falco wrote:
> On 1/11/19 1:51 PM, Steven A. Falco wrote:
>> On 1/11/19 1:21 PM, Seth Hillbrand wrote:
>>> Am 2019-01-11 12:18, schrieb Steven A. Falco:
>>>> I tried another ngspice experiment. I ran a simulation, and it
>>>> worked, albeit with the data size warning I asked about earlier. So
>>>> far so good.
>>>
>>> That warning was saying that it ran out of memory and had overwritten
>>> unplanned space. I would expect a crash after that. I'm not sure that
>>> KiCad can trap that kind of error as it occurred inside the library.
>>
>> Ok, but I'm concerned about the bug reports I'll get if I were to enable
>> ngspice and push the build to the Fedora community.
>>
>> I'll wait to see if the forum has any thoughts on the warning. I'll only
>> enable ngspice in the official Fedora builds if I can get to where the
>> examples run cleanly.
>
> I saved the netlist from the simple example I've been running:
>
> .title KiCad schematic
> V101 in 0 PULSE (0 5 1u 1u 1u 1 1)
> C101 Net-_C101-Pad1_ 0 1u
> C102 out 0 100n
> R101 Net-_C101-Pad1_ in 10k
> R102 out Net-_C101-Pad1_ 1k
> .save @v101[i]
> .save @c101[i]
> .save @c102[i]
> .save @r101[i]
> .save @r102[i]
> .save V(0)
> .save V(GND)
> .save V(Net-_C101-Pad1_)
> .save V(in)
> .save V(out)
> .tran 1u 100m
> .end
>
> When I run this circuit in stand-alone ngspice, it does a lot of
> overprinting, apparently to indicate the run-time of the job. Here is a
> small example of the character stream, where there are tons of backspaces as
> part of the overprinting:
>
> saf$ od -c foo
> 0000000 % 0 . 0 0 \b \b \b \b \b % 0 . 0 0 \b
> 0000020 \b \b \b \b % 0 . 0 0 \b \b \b \b \b % 0
> 0000040 . 0 0 \b \b \b \n
> 0000047
>
> The stand-alone captured output from this simple circuit is around 1 Mbyte!
> I'm guessing that this huge amount of data is blowing up the window and
> showing all of the strange characters.
>
> I'm not sure of the division of labor here. Is that something that a KiCad
> developer should address, or is it a library issue? Hopefully there is a
> flag that can be passed to the library to suppress the overprinted text.
>
> Steve
>
--- a/eeschema/sim/sim_plot_frame.cpp 2019-01-13 15:57:18.798891439 -0500
+++ b/eeschema/sim/sim_plot_frame.cpp 2019-01-13 15:58:03.648978524 -0500
@@ -1282,8 +1282,14 @@
void SIM_PLOT_FRAME::onSimReport( wxCommandEvent& aEvent )
{
- m_simConsole->AppendText( aEvent.GetString() + "\n" );
- m_simConsole->SetInsertionPointEnd();
+ wxString t = aEvent.GetString();
+
+ // Toss any text with a string of embedded backspaces, as these are
+ // progress status lines that don't print properly.
+ if( t.find("\b\b\b") == wxString::npos ) {
+ m_simConsole->AppendText( t + "\n" );
+ m_simConsole->SetInsertionPointEnd();
+ }
}
_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help : https://help.launchpad.net/ListHelp