Windows error 0x00000073, 115

Detailed Error Information

CONFIG_LIST_FAILED[1]

This is a Blue Screen of Death stop code. More information is available in the Knowledge Base article Bug Check 0x73: CONFIG_LIST_FAILED.

HRESULT analysis[2]

This is probably not the correct interpretation of this error. The Win32 error above is more likely to indicate the actual problem.
FlagsSeveritySuccess

This code indicates success, rather than an error. This may not be the correct interpretation of this code, or possibly the program is handling errors incorrectly.

Reserved (R)false
OriginMicrosoft
NTSTATUSfalse
Reserved (X)false
FacilityCode0 (0x000)
NameFACILITY_NULL[2][3]
DescriptionThe default facility code.[2][3]
Error Code115 (0x0073)

Possible solutions

3

Is mismatched symbols complete show stopper or I can trust them partially to extract leads?

c++
windbg

I've had to do this same trick numerous times for releases that shipped without pdb files.

The closer your build environment is to the one used to build the binary, the better luck you'll have. Making sure you have the exact source code, compiler version, and compiler/linker flags used to build the binary will make your life a lot easier. Sometimes you'll get lucky and the symbols will be so close you won't even notice anything strange.

Should I be reasonably sure that at least the crash is in the Db module?

That is about the only thing you can be sure of. You actually have that information without symbols. (Without symbols, it tends to show an exported symbol with a big offset, like Db!DllMain+0x123456. In that case, you can still trust that the module is correct.)

Can I also trust that the crash is in the same filename (abc.cpp) that it says it is?

Nope. Your job is now to verify everything you see.

Things to verify:

  • When looking at the callstack, does the source code show the function calling the next frame somewhere in that function's body? If so, there's a good chance it is correct. If not, it still might be correct if a function call was inlined.

  • At the top frame, does the disassembly at the ExceptionAddress look like something that the compiler should have generated for the source code the symbols point to? (For example: I'd expect CDbaAdoRecordset's constructor to be calling methods related to RecordSets like CoCreateInstance(/*...*/, __uuidof(Recordset), /*...*/);.

The fact that you know what things come out of the symbol file (function names, line numbers, etc...) should give you an idea of what you're looking at and what might be wrong.


Your best bet is to start where you would normally start debugging even if you had matching symbols... Attempt to read from address 00000004 It's probably trying to access the offset 4 on an object that's null. What's that object? Godspeed!

answered on Stack Overflow Jul 14, 2016 by Sean Cline
3

Is mismatched symbols complete show stopper or I can trust them partially to extract leads?

c++
windbg

Most things in an exception record are not related to PDBs, it will only be tried to resolve the exception address to a call stack.

I'm not exactly sure whether WinDbg would load a PDB for a DLL where the module name does not match. Also, it's unlikely you rename a DLL, I'd say.

So, things you can trust from an exception record with mismatched PDBs are:

ExceptionAddress: 020b1143 (Db!
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000000
   Parameter[1]: 00000004
Attempt to read from address 00000004

Things you can't trust:

!CDbaAdoRecordset::CDbaAdoRecordset+0x00000073) [abc.cpp @80]

Is it more likely the call stack is correct when it shows the actual functions that I can actually see in code [including function names]?

No. This may be accidental.

what is it that the crash dump files contribute in all this connections which I can probably use to narrow down the problem?

Nothing. You can only draw conclusions from your developer knowledge: what is the time difference of the mismatched PDB and the DLL and how many changes have you made in which files. Use a version control diff to find that out.

If you have made changes to the source code

This matching can go wrong, because

  • you have renamed the method in the meanwhile. Then the method name does not match
  • you have inserted lines, e.g. comments. Then the line number does not match
  • you have renamed the source file. Then the source file does not match.
  • you have added a class. This may change the address at which the compiler generates the method in question, because it has e.g. inserted the new class before.

If you have not made changes to the source code

This matching can still go wrong, because

  • your compiler environment has changed, e.g. due to an update or hotfix in the compiler, it now generates different assembly instructions.
  • you compile with different compiler settings (hopefully your compiler settings are stored along with the source code in a version control system, so you don't have this issue)
  • the compiler needn't compile the exact same way in another run. While there's no particular reason to compile it differently, compilers nowadays can compile in parallel (multi-threaded). Due to thread scheduling, some classes might be compiled in a different order, which may or may not result in a different DLL + PDB (depending on the implementation of the compiler or linker).
answered on Stack Overflow Jul 14, 2016 by Thomas Weller • edited Jul 15, 2016 by Thomas Weller
1

understanding assembly and stack %ebp above vs below

assembly
gdb
stack

At +36 sscanf has not yet been invoked, so you'd only see random memory garbage for the two output variables that you call input2/3.

Input1 is not the format, it is the string to be parsed.

What that call looks like is: sscanf(input1, "%d %d", &input2, &input3)

You can of course examine the variables, using x/s $eax for input1 and x/d for the input2/3:

(gdb) x/s $eax
0xffffdba6:     "14 115"
(gdb) ni
(gdb) x/d $ebp-0xc
0xffffd97c:     14
(gdb) x/d $ebp-0x10
0xffffd978:     115

(Note I have printed input1 before the sscanf, but the others after.) See the gdb help for format specifiers.

answered on Stack Overflow Oct 6, 2015 by Jester
1

How can I perform line by line crash debugging to deal with "has stopped working" error in c?

c
debugging
crash
gdb

You are getting segmentation fault and that is why your application is not running. Segmentation fault is a run time problem, even if your program compiles successfully.

In gdb after you get this:

Program received signal SIGSEGV, Segmentation fault.

type bt. The gdb's bt command will show you the back trace of your running program. It tells you which flow your program took and also the exact line which caused the segmentation fault and made your application crash.

The output of bt will be more 'readable' if you have built your application in debug mode. If you are using using gcc, you need to add -g flag to build in debug mode

answered on Stack Overflow Apr 20, 2018 by Syed.Waris
1

How can I perform line by line crash debugging to deal with "has stopped working" error in c?

c
debugging
crash
gdb

Sometimes, if your bug is particularly bad, it overwrites the stack and demolishes all the clues that gdb (and particularly the bt command) would need in order to show you where you were.

In that case you can try something like this:

  1. Start gdb, set a breakpoint on main, run your program, wait for the breakpoint to be hit.
  2. Single-step through your program with the n command, which steps over, not down into, functions. (That is, each called function runs all at once; you're not single-stepping recursively down into each function.) Sooner or later one of your single-steps will step over a function which crashes. Now you've narrowed it down a bit.
  3. Set a breakpoint on that function.
  4. Rerun the program.
  5. When you hit the breakpoint inside the troublesome function, again begin single-stepping. Sooner or later one of your single-steps will enter a sub-function which crashes. Now you've narrowed it down a bit more.
  6. Continue in this fashion until you've located the actual line causing the crash.
answered on Stack Overflow Apr 20, 2018 by Steve Summit • edited Apr 20, 2018 by Steve Summit
1

Customizing Fantacy Remote .INI file

remote-desktop
remote-access

In my opinion you should change this:

On server side, set iAcceptInput in [SERVER] section to 0. This might disable mouse and keyboard input.

On client side, in section [MENU] you have to try different values for the key iWindowMode. Try 1, 2 or 3.

answered on Super User May 27, 2010 by user4085
0

IMFMediaSink fails to add second audio output stream on PCs with AMD GPUs

windows
audio
mp4
ms-media-foundation

I see you already set MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS to false, which shouldn't aware GPU acceleration.

How do you initialize your pOutputAudioMediaType? Please paste your code here.

ebugging tips I can share:
1. Log with mftrace and compare with the good case.
2. Open your input in topoedit, see if it the topology can be resolved correctly on AMD. You can find topoedit sourcecode from WindowsSDK or github archive and study how it's implemented.

Below is my code snippet to setup output types for AAC, see if it helps.

HRESULT UpdateAudioOutputTypeAttributes(IMFAttributes *pAttr)  
{  
    HRESULT hr = S_OK;  
    if (!pAttr){  
        hr = E_INVALIDARG;  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetGUID(MF_MT_SUBTYPE, DEFAULT_AUDIO_OUT_FORMAT);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_COMPRESSED, 1);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AVG_BITRATE, DEFAULT_AUDIO_OUT_AVG_BITRATE);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AUDIO_BLOCK_ALIGNMENT, 1);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AUDIO_PREFER_WAVEFORMATEX, 1);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetGUID(MF_MT_AM_FORMAT_TYPE, FORMAT_WaveFormatEx);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION, DEFAULT_AUDIO_OUT_PROFILE_LEVEL);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_FIXED_SIZE_SAMPLES, 0);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AAC_PAYLOAD_TYPE, 0);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AUDIO_NUM_CHANNELS, DEFAULT_AUDIO_OUT_NUM_CHANNELS);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AUDIO_SAMPLES_PER_SECOND, DEFAULT_AUDIO_OUT_SAMPLES_PER_SECOND);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AUDIO_AVG_BYTES_PER_SECOND, DEFAULT_AUDIO_OUT_AVG_BYTES_PER_SECOND);  
    }  
    if (SUCCEEDED(hr)){  
        hr = pAttr->SetUINT32(MF_MT_AUDIO_BITS_PER_SAMPLE, DEFAULT_AUDIO_OUT_BITS_PER_SAMPLE);  
    }  
    if (SUCCEEDED(hr)){  
        BYTE aacUserData[14] = { 0x00, 0x00, DEFAULT_AUDIO_OUT_PROFILE_LEVEL, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };  
        WORD AudioSpecificConfig = 0;  
        AudioSpecificConfig |= 2 << 11;  
        AudioSpecificConfig |= FindFreqIndex(g_pWaveFmt->nSamplesPerSec) << 7;  
        AudioSpecificConfig |= g_pWaveFmt->nChannels << 3;  
        aacUserData[12] = AudioSpecificConfig >> 8;  
        aacUserData[13] = AudioSpecificConfig & 0x00FF;  
        hr = pAttr->SetBlob(MF_MT_USER_DATA, (UINT8*)&(aacUserData), ARRAYSIZE(aacUserData));  
    }  
    return hr;  
}
answered on Stack Overflow Apr 26, 2018 by Ivellios
0

IMFMediaSink fails to add second audio output stream on PCs with AMD GPUs

windows
audio
mp4
ms-media-foundation

I turns out that Windows10(1709) now ships with MediaFoundation libraries that have a MediaSink implementation that supports more than one audio layer as input/ouput. Anything before this version does not (I tested Win10 1704 and older versions of Windows10 and they failed).

The question now remains: can I use these DLLs on Windows versions as old as Win7 (via redistributables installer)? This is the minimum spec OS that I'd like to support.

answered on Stack Overflow May 4, 2018 by xris
0

Ruby on rails segmentation error

ruby-on-rails
ruby
ubuntu
rubygems

Looks like a new issue: https://github.com/eventmachine/eventmachine/issues/670

Try downgrading your eventmachine gem version:

gem uninstall eventmachine
gem install eventmachine -v 0.12.2
answered on Stack Overflow Sep 2, 2016 by DiegoSalazar
0

Ruby on rails segmentation error

ruby-on-rails
ruby
ubuntu
rubygems

If you're not really attached to thin, you could add puma as the server, and unless other gems have a dependency to eventmachine, it might solve your problem. See this for more details.

answered on Stack Overflow Sep 5, 2016 by Geo

Comments

Leave a comment

(plain text only)

Sources

  1. https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/bug-check-code-reference2
  2. https://msdn.microsoft.com/en-us/library/cc231198.aspx
  3. winerror.h from Windows SDK 10.0.14393.0

User contributions licensed under CC BY-SA 3.0