Skip to content

Instantly share code, notes, and snippets.

@fischermario
Created February 4, 2015 22:01
Show Gist options
  • Save fischermario/98ff4be900cb141bdd8a to your computer and use it in GitHub Desktop.
Save fischermario/98ff4be900cb141bdd8a to your computer and use it in GitHub Desktop.
Kodo multicast crash
#! /usr/bin/env python
# encoding: utf-8
# Copyright Steinwurf ApS 2011-2013.
# Distributed under the "STEINWURF RESEARCH LICENSE 1.0".
# See accompanying file LICENSE.rst or
# http://www.steinwurf.com/licensing
import kodo
import socket
import struct
import time
import hashlib
MCAST_GRP = '224.1.1.1'
MCAST_PORT = 5007
def main():
# Simple Multicast Receiver
# Set the number of symbols (i.e. the generation size in RLNC
# terminology) and the size of a symbol in bytes
symbols = 42 #64
symbol_size = 64 #1400
file_size = 2023
# In the following we will make an decoder factory.
# The factories are used to build actual decoder
decoder_factory = kodo.FullVectorDecoderFactoryBinary8(
max_symbols=symbols,
max_symbol_size=symbol_size)
decoder = decoder_factory.build()
sock = socket.socket(
family=socket.AF_INET,
type=socket.SOCK_DGRAM,
proto=socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
print("Processing")
while not decoder.is_complete():
time.sleep(0.2)
packet = sock.recv(1024)
print("Packet received! MD5: " + str(hashlib.md5(packet).hexdigest()))
decoder.decode(packet)
print("rank: {}/{}".format(decoder.rank(), decoder.symbols()))
# Write data to file and truncate the data
f = open("output_file.txt", 'wb')
tmp = decoder.copy_symbols()
f.write(tmp[:file_size])
f.close()
print("Processing finished")
if __name__ == "__main__":
main()
#! /usr/bin/env python
# encoding: utf-8
# Copyright Steinwurf ApS 2011-2013.
# Distributed under the "STEINWURF RESEARCH LICENSE 1.0".
# See accompanying file LICENSE.rst or
# http://www.steinwurf.com/licensing
import kodo
import os
import socket
import sys
import time
import hashlib
MCAST_GRP = '224.1.1.1'
MCAST_PORT = 5007
def main():
# Simple Multicast Sender
# Set the number of symbols (i.e. the generation size in RLNC
# terminology) and the size of a symbol in bytes
max_symbols = 42 #64
max_symbol_size = 64 #1400
# Get directory of this file
directory = os.path.dirname(os.path.realpath(__file__))
# The name of the file to use for the test
filename = "multicast_sender_example.py"
filesize = os.path.getsize(os.path.join(directory, filename))
print "File: " + os.path.join(directory, filename)
print "Size: " + str(filesize)
# In the following we will make an encoder factory.
# The factories are used to build actual encoder
encoder_factory = kodo.FullVectorEncoderFactoryBinary8(
max_symbols=max_symbols,
max_symbol_size=max_symbol_size)
encoder = encoder_factory.build()
sock = socket.socket(
family=socket.AF_INET,
type=socket.SOCK_DGRAM,
proto=socket.IPPROTO_UDP)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
# Get the data to encode.
f = open(os.path.join(directory, filename), 'rb')
data_in = f.read()
f.close()
# Assign the data buffer to the encoder so that we can
# produce encoded symbols
encoder.set_symbols(data_in)
address = (MCAST_GRP, MCAST_PORT)
print("Processing")
while True:
time.sleep(0.2)
# Generate an encoded packet
packet = encoder.encode()
print("Packet encoded! MD5: " + str(hashlib.md5(packet).hexdigest()))
# Send the packet.
sock.sendto(packet, address)
print("Processing finished")
if __name__ == "__main__":
main()
Processing
Packet received! MD5: 2c2777a4669b1eff4d6aa6da3c9747b5
rank: 1/42
Packet received! MD5: 4ed8f7ca2550cbd37144c9fb53459335
rank: 2/42
Packet received! MD5: ae11e7155bef250e49ee59178918fe0f
rank: 3/42
Packet received! MD5: 5c8736734789ab130abbf812444c97d5
rank: 4/42
Packet received! MD5: 2e43cc6c907383d22465122e3c19ba70
rank: 5/42
Packet received! MD5: 5fd04ce241e3a00ee6e624346120ac23
rank: 6/42
Packet received! MD5: 170d7e0863ce0452a9e01ea70d56d152
rank: 7/42
Packet received! MD5: 56c46e76732f8176727201c03b379eb7
rank: 8/42
Packet received! MD5: 49918d139472e448da10ddfbd10360cc
rank: 9/42
Packet received! MD5: 0729623ec1b22a4288922311b3642abf
rank: 10/42
Packet received! MD5: 2f30a59f8f7c8eb51a194bcdd11c75be
rank: 11/42
Packet received! MD5: b06a3c643f1bbefd449e0bece76ab06c
rank: 12/42
Packet received! MD5: 8326ebf731d656eede6b8fd663209538
rank: 13/42
Packet received! MD5: 1a32aa4fa9964a0a56b7c6d961817c03
rank: 14/42
Packet received! MD5: 1e98b2943d5564e8f7cd8be7a8d782be
rank: 15/42
Packet received! MD5: aaba46909e393b42222ba5e0294e1d90
rank: 16/42
Packet received! MD5: 95168727e4c0b5c505cea0a444f6baf9
rank: 17/42
Packet received! MD5: 34e45ad81b71109bd43c43ae4fb92747
rank: 18/42
Packet received! MD5: 938347a8d122e0b9b18a2bf158f5aec5
rank: 19/42
Packet received! MD5: 7d1d490734ec9c48801f8b9eee11ceee
rank: 20/42
Packet received! MD5: caefe8155d5ee98a4f649b13c2dd90c8
rank: 21/42
Packet received! MD5: fe92f694078b5eb2a0f6344e76199792
rank: 22/42
Packet received! MD5: 3b48c58cadf8d1895f1dc8aa63c1eab4
rank: 23/42
Packet received! MD5: 50cd10db25bf2005d7d79c273579ca8e
rank: 24/42
Packet received! MD5: 8e6f21a6c90d3347b5e43676637d6524
rank: 25/42
Packet received! MD5: e9364b965b5d9b7ccabcecfb406d81c8
rank: 26/42
Packet received! MD5: d3cb66905e04ca02543498629278ef82
rank: 27/42
Packet received! MD5: 3d0fda5abe775d586449810d22aadbe8
rank: 28/42
Packet received! MD5: 2fc2473c1e71662af699a124bd36bd21
rank: 29/42
Packet received! MD5: a039549789f4487188263263a5c336e3
rank: 30/42
Packet received! MD5: 096881baa44abfcad16743e0cbcc85b0
rank: 31/42
Packet received! MD5: eab34967699815cb08868673f2dce778
rank: 32/42
Packet received! MD5: 475eb794a020fee0339481bbd2cab8b6
rank: 32/42
Packet received! MD5: 28e76a88baea186dea4f41e74880df4b
rank: 32/42
Packet received! MD5: 11354ff0fba96663a22f39a39a84eb6a
rank: 32/42
Packet received! MD5: 64bb9f8132ead22312bef3ea8a3f8a37
rank: 32/42
Packet received! MD5: 63f39bc707822fe21de6b3f995fcde52
rank: 32/42
Packet received! MD5: 5ca9fdcd99c960c6338792127d66761a
rank: 32/42
Packet received! MD5: 26e9894805a5fd18a39f5db881cc0ed3
rank: 32/42
Packet received! MD5: 741e87c2cb5bdf3c70a8029a38788fb5
rank: 32/42
Packet received! MD5: adbfdd9ed22c62cd3f00d51eefaf4435
rank: 32/42
Packet received! MD5: 2d50bd448a31a3bfe1ed333b58d1a2c2
rank: 32/42
Packet received! MD5: 585546459556d66cadab7e453939fed8
rank: 32/42
Packet received! MD5: 8dc2fdbd030e964c937daa77535d251f
rank: 32/42
Packet received! MD5: a276d110ece18031e5b824fe29531e5d
rank: 32/42
Packet received! MD5: 9c2956b80f2d8fccc6e405a487fae571
rank: 32/42
Packet received! MD5: d056c61dc0a4667aa6ea04a280e524ea
rank: 32/42
Packet received! MD5: 51c2f7b354f2ff3176f085068ffdc536
rank: 32/42
Packet received! MD5: 41d3b10e1ce524062edd2c0015b92c9d
rank: 32/42
Packet received! MD5: 94b4b0bc51fdf28e7e6b3894a43050a0
rank: 32/42
Packet received! MD5: 4330137c3672e5cd6f5b490f3cd8545f
rank: 32/42
Packet received! MD5: 82b72284ca8df98d317b77c79e247a06
rank: 32/42
Packet received! MD5: e8d8d84e7ac23cb48dce4207e62e35b1
rank: 32/42
Packet received! MD5: 59ed101d5d55ff1498fe784d53107d38
rank: 32/42
Packet received! MD5: 14cf30898a9f0a1dc6178d4b32564de6
rank: 32/42
Packet received! MD5: ceb8cf06023e4764f43f688cc54ad021
python: /tmp/pip_build_root/kodo/kodo-python/bundle_dependencies/kodo-879b21/22.1.0/src/kodo/bidirectional_linear_block_decoder.hpp:96: void kodo::bidirectional_linear_block_decoder<DirectionPolicy, SuperCoder>::decode_symbol(uint8_t*, uint32_t) [with DirectionPolicy = kodo::forward_linear_block_decoder_policy; SuperCoder = kodo::rank_info<kodo::symbol_decoding_status_counter<kodo::symbol_decoding_status_tracker<kodo::coefficient_value_access<kodo::coefficient_storage<kodo::coefficient_info<kodo::trace_set_symbol_storage<kodo::disable_trace, kodo::deep_symbol_storage<kodo::storage_bytes_used<kodo::storage_block_length<kodo::storage_block_size<kodo::finite_field_math<fifi::full_table<fifi::binary8>, kodo::finite_field_info<fifi::binary8, kodo::trace_layer<kodo::disable_trace, kodo::final_layer> > > > > > > > > > > > > >; uint8_t = unsigned char; uint32_t = unsigned int]: Assertion `index < SuperCoder::symbols()' failed.
Aborted (core dumped)
------------------
(program exited with code: 134)
Press return to continue
File: /home/min/Schreibtisch/multicast_sender_example.py
Size: 2023
Processing
Packet encoded! MD5: 29e853fa128c1d6472b171ac1a611658
Packet encoded! MD5: 98a6e586663dda343f039551dfbb069c
Packet encoded! MD5: cc97a0f0ad6c1741fd59c6b485d54a5a
Packet encoded! MD5: c731ed8a93aa444ad3f6de88ae0353d2
-- cut --
Packet encoded! MD5: 2c2777a4669b1eff4d6aa6da3c9747b5
Packet encoded! MD5: 4ed8f7ca2550cbd37144c9fb53459335
Packet encoded! MD5: ae11e7155bef250e49ee59178918fe0f
Packet encoded! MD5: 5c8736734789ab130abbf812444c97d5
Packet encoded! MD5: 2e43cc6c907383d22465122e3c19ba70
Packet encoded! MD5: 5fd04ce241e3a00ee6e624346120ac23
Packet encoded! MD5: 170d7e0863ce0452a9e01ea70d56d152
Packet encoded! MD5: 56c46e76732f8176727201c03b379eb7
Packet encoded! MD5: 49918d139472e448da10ddfbd10360cc
Packet encoded! MD5: 0729623ec1b22a4288922311b3642abf
Packet encoded! MD5: 2f30a59f8f7c8eb51a194bcdd11c75be
Packet encoded! MD5: b06a3c643f1bbefd449e0bece76ab06c
Packet encoded! MD5: 8326ebf731d656eede6b8fd663209538
Packet encoded! MD5: 1a32aa4fa9964a0a56b7c6d961817c03
Packet encoded! MD5: 1e98b2943d5564e8f7cd8be7a8d782be
Packet encoded! MD5: aaba46909e393b42222ba5e0294e1d90
Packet encoded! MD5: 95168727e4c0b5c505cea0a444f6baf9
Packet encoded! MD5: 34e45ad81b71109bd43c43ae4fb92747
Packet encoded! MD5: 938347a8d122e0b9b18a2bf158f5aec5
Packet encoded! MD5: bad45a819fdd103cb6bae38b2307f516
Packet encoded! MD5: 7d1d490734ec9c48801f8b9eee11ceee
Packet encoded! MD5: caefe8155d5ee98a4f649b13c2dd90c8
Packet encoded! MD5: fe92f694078b5eb2a0f6344e76199792
Packet encoded! MD5: 3b48c58cadf8d1895f1dc8aa63c1eab4
Packet encoded! MD5: 50cd10db25bf2005d7d79c273579ca8e
Packet encoded! MD5: 8e6f21a6c90d3347b5e43676637d6524
Packet encoded! MD5: e9364b965b5d9b7ccabcecfb406d81c8
Packet encoded! MD5: 9417fa4eb09fcffba8027595068db4aa
Packet encoded! MD5: d3cb66905e04ca02543498629278ef82
Packet encoded! MD5: 3d0fda5abe775d586449810d22aadbe8
Packet encoded! MD5: 2fc2473c1e71662af699a124bd36bd21
Packet encoded! MD5: a039549789f4487188263263a5c336e3
Packet encoded! MD5: 096881baa44abfcad16743e0cbcc85b0
Packet encoded! MD5: eab34967699815cb08868673f2dce778
Packet encoded! MD5: 475eb794a020fee0339481bbd2cab8b6
Packet encoded! MD5: 28e76a88baea186dea4f41e74880df4b
Packet encoded! MD5: b8b630f902e6a09567122fac6a5e1db2
Packet encoded! MD5: 11354ff0fba96663a22f39a39a84eb6a
Packet encoded! MD5: 95dc049b98ce4fa79408114a09fe459e
Packet encoded! MD5: 64bb9f8132ead22312bef3ea8a3f8a37
Packet encoded! MD5: 63f39bc707822fe21de6b3f995fcde52
Packet encoded! MD5: 5ca9fdcd99c960c6338792127d66761a
Packet encoded! MD5: 26e9894805a5fd18a39f5db881cc0ed3
Packet encoded! MD5: 741e87c2cb5bdf3c70a8029a38788fb5
Packet encoded! MD5: adbfdd9ed22c62cd3f00d51eefaf4435
Packet encoded! MD5: 2d50bd448a31a3bfe1ed333b58d1a2c2
Packet encoded! MD5: 585546459556d66cadab7e453939fed8
Packet encoded! MD5: 8dc2fdbd030e964c937daa77535d251f
Packet encoded! MD5: a276d110ece18031e5b824fe29531e5d
Packet encoded! MD5: 9c2956b80f2d8fccc6e405a487fae571
Packet encoded! MD5: 271cee5bda17f8264e28a8875b41f276
Packet encoded! MD5: d056c61dc0a4667aa6ea04a280e524ea
Packet encoded! MD5: 51c2f7b354f2ff3176f085068ffdc536
Packet encoded! MD5: 41d3b10e1ce524062edd2c0015b92c9d
Packet encoded! MD5: 1bb1812ac8ff07a73d956bcd9770372c
Packet encoded! MD5: 94b4b0bc51fdf28e7e6b3894a43050a0
Packet encoded! MD5: 4330137c3672e5cd6f5b490f3cd8545f
Packet encoded! MD5: 82b72284ca8df98d317b77c79e247a06
Packet encoded! MD5: e8d8d84e7ac23cb48dce4207e62e35b1
Packet encoded! MD5: 59ed101d5d55ff1498fe784d53107d38
Packet encoded! MD5: 14cf30898a9f0a1dc6178d4b32564de6
Packet encoded! MD5: ceb8cf06023e4764f43f688cc54ad021
Packet encoded! MD5: 57d41106d044b40d8705e87da614248e
Packet encoded! MD5: 6a7700a23d47684842833c4477b78dcb
Packet encoded! MD5: 06f11836ecdf31bd06b80af44b2f3427
Packet encoded! MD5: 9c739ad4173a7c27411cff13390d6bcc
Packet encoded! MD5: cf7da5c0ceb2ff64073cb3f367cc646b
Packet encoded! MD5: 987e4b55621f3902151f6330c4ee9934
Packet encoded! MD5: a71777c83259176947e4a8c199629e3d
Packet encoded! MD5: 6107888549aef7b1e4d93275c8ea8228
Packet encoded! MD5: f15444539759a7df65f2d8836bceb42e
Packet encoded! MD5: c8c12b5128cdba51fe31b2e2022f363d
Packet encoded! MD5: 6118d282b62b4837343917adc337ac87
Packet encoded! MD5: 58b051dadd195f9f309a77b915076749
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment