Paul's Programming Notes     Archive     Feed     Github

OpenSSL DLL load failed On Windows - Python

The DLL load failed error happened when cherrypy tried the following import: "from OpenSSL import SSL"

ChannelFailures: VerificationError("importing 'C:\\\\Python27\\\\lib\\\\site-packages\\\\cryptography\\\\_Cryptography_c
ffi_48bbf0ebx93c91939.pyd': DLL load failed: %1 is not a valid Win32 application.",)

These error messages are solved with this install: http://slproweb.com/download/Win32OpenSSL-1_0_1g.exe

If you have a 32-bit version of python, that install will move the correct DLLs to your system32 folder.

My First Python Library

https://github.com/pawl/Chinese-RFID-Access-Control-Library

I purchased a chinese access controller and reverse engineered some functionality of the windows software that came with it. I made a python library that does some of the same functions as the desktop software: https://github.com/pawl/Chinese-RFID-Access-Control-Library/

I use this library to tie our access controller into with our billing system (called WHMCS) and another web application (which is meant to be a self-documenting way to activate/deactivate RFID badges): https://github.com/pawl/MakerManager

Now, whenever someone stops paying for 5+ days, their RFID badge is deactivated because a "hook" in WHMCS sends a request to a webservice that uses the access control library.

Android Bitcoin OutOfMemoryError Or Crashing On Startup

This page explains the problem: https://code.google.com/p/bitcoin-wallet/wiki/OutOfMemory

At one point, it got so bad that the application would not even start anymore.

Solution:

  1. Get Root Explorer
  2. Navigate to your system folder and open "build.prop" in the text editor
  3. Edit "dalvik.vm.heapsize" and "dalvik.vm.heapgrowthlimit" to the following:
    dalvik.vm.heapsize=256m
    dalvik.vm.heapgrowthlimit=128m
  4. Restart your phone, open the bitcoin application, and backup your keys before it crashes again.

Lock wait timeout exceeded - MySQL

OperationalError: (OperationalError) (1205, 'Lock wait timeout exceeded; try restarting transaction')

After trying a bunch of different solutions in the code, I ended up having to restart MySQL to get this error message to go away.

Solution To Apache Triggering OOM-Killer

Update: We switched to Prefork apache and have been experiencing significantly fewer problems.

In this instance, we were getting hit with web crawlers according to the access log and the syslog was saying this: /usr/sbin/apach invoked oom-killer

This issue occurs when apache opens up too many child processes, uses up too much memory, then OOM killer starts shutting down random processes like mysql.

The problem ended up being that our apache2.conf did not have any configuration limiting the number of processes that Apache could open. It might have had a default, but the default was too high. We were using Apache ITK MPM and the apache2.conf only mentioned prefork, worker, and event MPMs. You can check which MPM you are running with "apache2 -V".

Adding this to the configuration solved the problem:
<IfModule mpm_itk_module>
    StartServers 5
    MinSpareServers 5
    MaxSpareServers 10
    ServerLimit 75
    MaxClients 75
    MaxRequestsPerChild 5000
</IfModule>

At first I had the ServerLimit and MaxClients set to 150 and it seemed like apache was ignoring ServerLimit and Maxclients. However, ITK MPM creates an extra fork for each request (according to their site), that's why there was 200+ processes running for my limit of 150. So, the process count is going to be 2x the limit you set.